comparison src/gtkconv.c @ 12710:2d326453b33d

[gaim-migrate @ 15054] Make the context-menu send item do its work by firing the message_send signal, instead of calling the internal callback directly. Change the message_send handlers to connect after the default handler. This way, we can be sure that plugins can block the message from being sent, at a UI level. I'm not sure if that was strictly necessary, but it shouldn't hurt anything. committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Wed, 04 Jan 2006 02:41:11 +0000
parents d495909dcdc9
children ba053e8d71b6
comparison
equal deleted inserted replaced
12709:b4bd3b41bf3b 12710:2d326453b33d
3614 return; 3614 return;
3615 3615
3616 buddy_cb_common(buddy, conv, FALSE); 3616 buddy_cb_common(buddy, conv, FALSE);
3617 } 3617 }
3618 3618
3619 static void send_menu_cb(GtkWidget *widget, GaimGtkConversation *gtkconv)
3620 {
3621 g_signal_emit_by_name(gtkconv->entry, "message_send");
3622 }
3623
3619 static void 3624 static void
3620 entry_popup_menu_cb(GtkIMHtml *imhtml, GtkMenu *menu, gpointer data) 3625 entry_popup_menu_cb(GtkIMHtml *imhtml, GtkMenu *menu, gpointer data)
3621 { 3626 {
3622 GtkWidget *menuitem; 3627 GtkWidget *menuitem;
3623 GaimGtkConversation *gtkconv = data; 3628 GaimGtkConversation *gtkconv = data;
3624 3629
3625 g_return_if_fail(menu != NULL); 3630 g_return_if_fail(menu != NULL);
3626 g_return_if_fail(gtkconv != NULL); 3631 g_return_if_fail(gtkconv != NULL);
3627 3632
3628 menuitem = gaim_new_item_from_stock(NULL, _("_Send"), GAIM_STOCK_SEND, 3633 menuitem = gaim_new_item_from_stock(NULL, _("_Send"), GAIM_STOCK_SEND,
3629 G_CALLBACK(send_cb), gtkconv, 3634 G_CALLBACK(send_menu_cb), gtkconv,
3630 0, 0, NULL); 3635 0, 0, NULL);
3631 if (gtk_text_buffer_get_char_count(imhtml->text_buffer) == 0) 3636 if (gtk_text_buffer_get_char_count(imhtml->text_buffer) == 0)
3632 gtk_widget_set_sensitive(menuitem, FALSE); 3637 gtk_widget_set_sensitive(menuitem, FALSE);
3633 gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menuitem, 0); 3638 gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menuitem, 0);
3634 3639
3866 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); 3871 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
3867 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", gtkconv); 3872 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", gtkconv);
3868 3873
3869 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", 3874 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
3870 G_CALLBACK(entry_key_press_cb), gtkconv); 3875 G_CALLBACK(entry_key_press_cb), gtkconv);
3871 g_signal_connect(G_OBJECT(gtkconv->entry), "message_send", 3876 g_signal_connect_after(G_OBJECT(gtkconv->entry), "message_send",
3872 G_CALLBACK(send_cb), gtkconv); 3877 G_CALLBACK(send_cb), gtkconv);
3873 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", 3878 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
3874 G_CALLBACK(entry_stop_rclick_cb), NULL); 3879 G_CALLBACK(entry_stop_rclick_cb), NULL);
3875 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate", 3880 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate",
3876 G_CALLBACK(size_allocate_cb), gtkconv); 3881 G_CALLBACK(size_allocate_cb), gtkconv);
3877 3882
3957 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); 3962 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
3958 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", gtkconv); 3963 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", gtkconv);
3959 3964
3960 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", 3965 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
3961 G_CALLBACK(entry_key_press_cb), gtkconv); 3966 G_CALLBACK(entry_key_press_cb), gtkconv);
3962 g_signal_connect(G_OBJECT(gtkconv->entry), "message_send", G_CALLBACK(send_cb), gtkconv); 3967 g_signal_connect_after(G_OBJECT(gtkconv->entry), "message_send",
3968 G_CALLBACK(send_cb), gtkconv);
3963 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", 3969 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
3964 G_CALLBACK(entry_stop_rclick_cb), NULL); 3970 G_CALLBACK(entry_stop_rclick_cb), NULL);
3965 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate", 3971 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate",
3966 G_CALLBACK(size_allocate_cb), gtkconv); 3972 G_CALLBACK(size_allocate_cb), gtkconv);
3967 3973