# HG changeset patch # User Elliott Sales de Andrade # Date 1226554404 0 # Node ID f0d5d78e8e4748d0424e31b38b0d03be9a644c17 # Parent 068557dd121ad94517f12b73f184a2da09960a7c Make the Send button insensitive when there is no text in the input buffer. Has a few minor format changes from the original patch by Gabriel. Fixes #7529. diff -r 068557dd121a -r f0d5d78e8e47 pidgin/plugins/sendbutton.c --- a/pidgin/plugins/sendbutton.c Thu Nov 13 04:32:54 2008 +0000 +++ b/pidgin/plugins/sendbutton.c Thu Nov 13 05:33:24 2008 +0000 @@ -37,9 +37,20 @@ } static void +input_buffer_changed(GtkTextBuffer *text_buffer, GtkWidget *send_button) +{ + if (gtk_text_buffer_get_char_count(text_buffer) != 0) + gtk_widget_set_sensitive(send_button, TRUE); + else + gtk_widget_set_sensitive(send_button, FALSE); +} + +static void create_send_button_pidgin(PidginConversation *gtkconv) { GtkWidget *send_button; + GtkTextBuffer *buf; + guint signal_id; send_button = g_object_get_data(G_OBJECT(gtkconv->lower_hbox), "send_button"); @@ -54,6 +65,16 @@ FALSE, 0); gtk_widget_show(send_button); + buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); + if (buf) { + signal_id = g_signal_connect(G_OBJECT(buf), "changed", + G_CALLBACK(input_buffer_changed), + send_button); + g_object_set_data(G_OBJECT(send_button), "buffer-signal", + GINT_TO_POINTER(signal_id)); + input_buffer_changed(buf, send_button); + } + g_object_set_data(G_OBJECT(gtkconv->lower_hbox), "send_button", send_button); } @@ -66,6 +87,15 @@ send_button = g_object_get_data(G_OBJECT(gtkconv->lower_hbox), "send_button"); if (send_button != NULL) { + GtkTextBuffer *buf; + guint signal_id; + + buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); + signal_id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(send_button), + "buffer-signal")); + if (buf && signal_id) + g_signal_handler_disconnect(G_OBJECT(buf), signal_id); + gtk_widget_destroy(send_button); g_object_set_data(G_OBJECT(gtkconv->lower_hbox), "send_button", NULL);