Mercurial > pidgin.yaz
diff pidgin/gtkconv.c @ 15426:c9497aad9fc4
Warmenhoved patch #1397916: "Turns Block button in conv menu into Unblock after blocking" from Glauber de Oliveira Costa (glommer). You know the drill.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sat, 27 Jan 2007 17:46:52 +0000 |
parents | 5fe8042783c1 |
children | a415922e2882 |
line wrap: on
line diff
--- a/pidgin/gtkconv.c Sat Jan 27 16:40:21 2007 +0000 +++ b/pidgin/gtkconv.c Sat Jan 27 17:46:52 2007 +0000 @@ -712,6 +712,20 @@ } static void +unblock_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) +{ + GaimConversation *conv = gtkconv->active_conv; + GaimAccount *account; + + account = gaim_conversation_get_account(conv); + + if (account != NULL && gaim_account_is_connected(account)) + gaim_gtk_request_add_permit(account, gaim_conversation_get_name(conv)); + + gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); +} + +static void do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info) { const char *buddy, *message; @@ -1297,6 +1311,17 @@ } static void +menu_unblock_cb(gpointer data, guint action, GtkWidget *widget) +{ + GaimGtkWindow *win = data; + GaimConversation *conv; + + conv = gaim_gtk_conv_window_get_active_conversation(win); + + unblock_cb(NULL, GAIM_GTK_CONVERSATION(conv)); +} + +static void menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget) { GaimGtkWindow *win = data; @@ -2735,6 +2760,8 @@ "<StockItem>", GAIM_STOCK_EDIT }, { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0, "<StockItem>", GAIM_STOCK_BLOCK }, + { N_("/Conversation/_Unblock..."), NULL, menu_unblock_cb, 0, + "<StockItem>", GAIM_STOCK_UNBLOCK }, { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0, "<StockItem>", GTK_STOCK_ADD }, { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0, @@ -2951,6 +2978,10 @@ gtk_item_factory_get_widget(win->menu.item_factory, N_("/Conversation/Block...")); + win->menu.unblock = + gtk_item_factory_get_widget(win->menu.item_factory, + N_("/Conversation/Unblock...")); + win->menu.add = gtk_item_factory_get_widget(win->menu.item_factory, N_("/Conversation/Add...")); @@ -5627,7 +5658,13 @@ gtk_widget_show(win->menu.get_info); gtk_widget_hide(win->menu.invite); gtk_widget_show(win->menu.alias); - gtk_widget_show(win->menu.block); + if (gaim_privacy_check(account, gaim_conversation_get_name(conv))) { + gtk_widget_hide(win->menu.unblock); + gtk_widget_show(win->menu.block); + } else { + gtk_widget_hide(win->menu.block); + gtk_widget_show(win->menu.unblock); + } if ((account == NULL) || gaim_find_buddy(account, gaim_conversation_get_name(conv)) == NULL) { gtk_widget_show(win->menu.add); @@ -6574,10 +6611,9 @@ GaimConversation *conv; gtkconv = get_gtkconv_with_contact(gaim_buddy_get_contact(buddy)); - if (gtkconv) - { + if (gtkconv) { conv = gtkconv->active_conv; - gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_TAB_ICON); + gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_TAB_ICON | GAIM_GTKCONV_MENU); } }