Mercurial > pidgin
comparison src/gtkimhtml.c @ 12833:cb2d493e1925
[gaim-migrate @ 15181]
Eliminate and empty (but not logically useless) if block by reworking the logic.
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Wed, 11 Jan 2006 22:53:37 +0000 |
parents | e8db8f94a2db |
children | 339d61ebca8a |
comparison
equal
deleted
inserted
replaced
12832:0c6a0362a48f | 12833:cb2d493e1925 |
---|---|
807 | 807 |
808 gtk_clipboard_request_text(clipboard, paste_plaintext_received_cb, imhtml); | 808 gtk_clipboard_request_text(clipboard, paste_plaintext_received_cb, imhtml); |
809 | 809 |
810 } | 810 } |
811 | 811 |
812 | 812 static void fix_popup_menu_item_cb(GtkWidget *widget, gpointer data) |
813 { | |
814 gpointer *more_data = data; | |
815 int *count = more_data[0]; | |
816 GtkIMHtml *imhtml = more_data[1]; | |
817 | |
818 /* Destroy all items except Copy and Select All, if the text isn't editable. */ | |
819 if (!imhtml->editable && *count != 1 && *count != 5) | |
820 { | |
821 gtk_widget_destroy(widget); | |
822 } | |
823 else if (*count == 5 && gtk_text_buffer_get_char_count(imhtml->text_buffer) == 0) | |
824 { | |
825 /* There is no text in the buffer, so Select All should be insensitive. */ | |
826 gtk_widget_set_sensitive(widget, FALSE); | |
827 } | |
828 | |
829 (*count)++; | |
830 } | |
813 | 831 |
814 static void hijack_menu_cb(GtkIMHtml *imhtml, GtkMenu *menu, gpointer data) | 832 static void hijack_menu_cb(GtkIMHtml *imhtml, GtkMenu *menu, gpointer data) |
815 { | 833 { |
834 int count = 0; | |
835 gpointer more_data[2] = {&count, imhtml}; | |
816 GtkWidget *menuitem; | 836 GtkWidget *menuitem; |
837 | |
838 gtk_container_foreach(GTK_CONTAINER(menu), fix_popup_menu_item_cb, more_data); | |
839 | |
840 if (!imhtml->editable) | |
841 return; | |
817 | 842 |
818 menuitem = gtk_menu_item_new_with_mnemonic(_("Paste as Plain _Text")); | 843 menuitem = gtk_menu_item_new_with_mnemonic(_("Paste as Plain _Text")); |
819 gtk_widget_show(menuitem); | 844 gtk_widget_show(menuitem); |
820 gtk_widget_set_sensitive(menuitem, | 845 gtk_widget_set_sensitive(menuitem, |
821 (imhtml->editable && | 846 (gtk_clipboard_wait_is_text_available( |
822 gtk_clipboard_wait_is_text_available( | 847 gtk_widget_get_clipboard(GTK_WIDGET(imhtml), GDK_SELECTION_CLIPBOARD)))); |
823 gtk_widget_get_clipboard(GTK_WIDGET(imhtml), GDK_SELECTION_CLIPBOARD)))); | |
824 /* put it after "Paste" */ | 848 /* put it after "Paste" */ |
825 gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menuitem, 3); | 849 gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menuitem, 3); |
826 | 850 |
827 g_signal_connect(G_OBJECT(menuitem), "activate", | 851 g_signal_connect(G_OBJECT(menuitem), "activate", |
828 G_CALLBACK(paste_unformatted_cb), imhtml); | 852 G_CALLBACK(paste_unformatted_cb), imhtml); |
1822 g_return_if_fail (imhtml != NULL); | 1846 g_return_if_fail (imhtml != NULL); |
1823 g_return_if_fail (GTK_IS_IMHTML (imhtml)); | 1847 g_return_if_fail (GTK_IS_IMHTML (imhtml)); |
1824 | 1848 |
1825 if (sml == NULL) | 1849 if (sml == NULL) |
1826 tree = imhtml->default_smilies; | 1850 tree = imhtml->default_smilies; |
1827 else if ((tree = g_hash_table_lookup(imhtml->smiley_data, sml))) { | 1851 else if (!(tree = g_hash_table_lookup(imhtml->smiley_data, sml))) { |
1828 } else { | |
1829 tree = gtk_smiley_tree_new(); | 1852 tree = gtk_smiley_tree_new(); |
1830 g_hash_table_insert(imhtml->smiley_data, g_strdup(sml), tree); | 1853 g_hash_table_insert(imhtml->smiley_data, g_strdup(sml), tree); |
1831 } | 1854 } |
1832 | 1855 |
1833 smiley->imhtml = imhtml; | 1856 smiley->imhtml = imhtml; |