Mercurial > pidgin.yaz
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 |