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;