# HG changeset patch # User Sadrul Habib Chowdhury # Date 1275535445 0 # Node ID 19c14f0fa66902bf19d602e01fe3714e151546b3 # Parent c43570e34d814f67d1b66c210cad5d6847be249f# Parent 7a28e9b12038c7d5162390cf2b43a29828cf8df1 merge of '1ea3865b477734411bc371709c1d29d4a4be04ab' and '2ac6557a402c32c1c9cc902a500058eb824f0795' diff -r c43570e34d81 -r 19c14f0fa669 pidgin/gtkconv.c --- a/pidgin/gtkconv.c Thu Jun 03 03:08:22 2010 +0000 +++ b/pidgin/gtkconv.c Thu Jun 03 03:24:05 2010 +0000 @@ -282,6 +282,15 @@ } static void +conversation_entry_clear(PidginConversation *gtkconv) +{ + GtkIMHtml *imhtml = GTK_IMHTML(gtkconv->entry); + gtk_source_undo_manager_begin_not_undoable_action(imhtml->undo_manager); + gtk_imhtml_clear(imhtml); + gtk_source_undo_manager_end_not_undoable_action(imhtml->undo_manager); +} + +static void clear_formatting_cb(GtkIMHtml *imhtml, PidginConversation *gtkconv) { default_formatize(gtkconv); @@ -557,7 +566,7 @@ account = purple_conversation_get_account(conv); if (check_for_and_do_command(conv)) { - gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); + conversation_entry_clear(gtkconv); return; } @@ -612,7 +621,7 @@ g_free(clean); g_free(buf); - gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); + conversation_entry_clear(gtkconv); gtkconv_set_unseen(gtkconv, PIDGIN_UNSEEN_NONE); } diff -r c43570e34d81 -r 19c14f0fa669 pidgin/gtkimhtmltoolbar.c --- a/pidgin/gtkimhtmltoolbar.c Thu Jun 03 03:08:22 2010 +0000 +++ b/pidgin/gtkimhtmltoolbar.c Thu Jun 03 03:24:05 2010 +0000 @@ -49,6 +49,9 @@ gboolean is_active, GtkIMHtmlToolbar *toolbar); +static gboolean +gtk_imhtmltoolbar_popup_menu(GtkWidget *widget, + GdkEventButton *event, GtkIMHtmlToolbar *toolbar); static void do_bold(GtkWidget *bold, GtkIMHtmlToolbar *toolbar) { @@ -1098,6 +1101,16 @@ *y -= widget->allocation.height; } +static gboolean +button_activate_on_click(GtkWidget *button, GdkEventButton *event, GtkIMHtmlToolbar *toolbar) +{ + if (event->button == 1 && GTK_IS_TOGGLE_BUTTON(button)) + gtk_widget_activate(button); + else if (event->button == 3) + return gtk_imhtmltoolbar_popup_menu(button, event, toolbar); + return FALSE; +} + static void pidgin_menu_clicked(GtkWidget *button, GtkMenu *menu) { gtk_widget_show_all(GTK_WIDGET(menu)); @@ -1241,6 +1254,7 @@ for (iter = 0; buttons[iter].stock; iter++) { if (buttons[iter].stock[0]) { button = pidgin_pixbuf_toolbar_button_from_stock(buttons[iter].stock); + g_signal_connect(G_OBJECT(button), "button-press-event", G_CALLBACK(button_activate_on_click), toolbar); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(buttons[iter].callback), toolbar); *(buttons[iter].button) = button; @@ -1251,6 +1265,7 @@ } /* create the attention button (this is a bit hacky to not break ABI) */ button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION); + g_signal_connect(G_OBJECT(button), "button-press-event", G_CALLBACK(button_activate_on_click), toolbar); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(send_attention_cb), toolbar); g_object_set_data(G_OBJECT(toolbar), "attention", button); @@ -1382,7 +1397,7 @@ gtk_container_foreach(GTK_CONTAINER(menuitem), (GtkCallback)enable_markup, NULL); } - g_signal_connect_swapped(G_OBJECT(font_button), "button-press-event", G_CALLBACK(gtk_widget_activate), font_button); + g_signal_connect(G_OBJECT(font_button), "button-press-event", G_CALLBACK(button_activate_on_click), toolbar); g_signal_connect(G_OBJECT(font_button), "activate", G_CALLBACK(pidgin_menu_clicked), font_menu); g_signal_connect(G_OBJECT(font_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), font_button); @@ -1423,7 +1438,7 @@ gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem); toolbar->insert_hr = menuitem; - g_signal_connect_swapped(G_OBJECT(insert_button), "button-press-event", G_CALLBACK(gtk_widget_activate), insert_button); + g_signal_connect(G_OBJECT(insert_button), "button-press-event", G_CALLBACK(button_activate_on_click), toolbar); g_signal_connect(G_OBJECT(insert_button), "activate", G_CALLBACK(pidgin_menu_clicked), insert_menu); g_signal_connect(G_OBJECT(insert_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), insert_button); toolbar->sml = NULL; @@ -1443,6 +1458,7 @@ label = gtk_label_new_with_mnemonic(_("_Smile!")); gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(box), smiley_button, FALSE, FALSE, 0); + g_signal_connect(G_OBJECT(smiley_button), "button-press-event", G_CALLBACK(button_activate_on_click), toolbar); g_signal_connect_swapped(G_OBJECT(smiley_button), "clicked", G_CALLBACK(gtk_button_clicked), toolbar->smiley); gtk_widget_show_all(smiley_button);