Wed, 28 Nov 2018 04:58:03 +0000
Merged in default (pull request #438)
Separate presenting/focusing on the buddy list from showing it
Approved-by: Elliott Sales de Andrade
Approved-by: Gary Kramlich
Approved-by: Eion Robb
| pidgin/libpidgin.c | file | annotate | diff | comparison | revisions |
--- a/pidgin/gtkaccount.c Wed Nov 28 04:55:10 2018 +0000 +++ b/pidgin/gtkaccount.c Wed Nov 28 04:58:03 2018 +0000 @@ -1350,7 +1350,11 @@ if (purple_accounts_get_all() == NULL) { /* We're adding our first account. Be polite and show the buddy list */ - purple_blist_set_visible(TRUE); + PidginBuddyList *blist = + pidgin_blist_get_default_gtk_blist(); + if (blist != NULL && blist->window != NULL) { + gtk_window_present(GTK_WINDOW(blist->window)); + } } account = purple_account_new(username, dialog->protocol_id);
--- a/pidgin/gtkblist.c Wed Nov 28 04:55:10 2018 +0000 +++ b/pidgin/gtkblist.c Wed Nov 28 04:58:03 2018 +0000 @@ -246,6 +246,20 @@ } static void +gtk_blist_hide_cb(GtkWidget *widget, gpointer data) +{ + purple_signal_emit(pidgin_blist_get_handle(), + "gtkblist-hiding", gtkblist); +} + +static void +gtk_blist_show_cb(GtkWidget *widget, gpointer data) +{ + purple_signal_emit(pidgin_blist_get_handle(), + "gtkblist-unhiding", gtkblist); +} + +static void gtk_blist_size_allocate_cb(GtkWidget *widget, GtkAllocation *allocation, gpointer data) { @@ -5755,6 +5769,10 @@ gtk_container_add(GTK_CONTAINER(gtkblist->window), gtkblist->main_vbox); g_signal_connect(G_OBJECT(gtkblist->window), "delete_event", G_CALLBACK(gtk_blist_delete_cb), NULL); + g_signal_connect(G_OBJECT(gtkblist->window), "hide", + G_CALLBACK(gtk_blist_hide_cb), NULL); + g_signal_connect(G_OBJECT(gtkblist->window), "show", + G_CALLBACK(gtk_blist_show_cb), NULL); g_signal_connect(G_OBJECT(gtkblist->window), "size-allocate", G_CALLBACK(gtk_blist_size_allocate_cb), NULL); g_signal_connect(G_OBJECT(gtkblist->window), "visibility_notify_event", G_CALLBACK(gtk_blist_visibility_cb), NULL); @@ -6883,13 +6901,9 @@ return; if (show) { - if(!PIDGIN_WINDOW_ICONIFIED(gtkblist->window) && - !gtk_widget_get_visible(gtkblist->window)) - purple_signal_emit(pidgin_blist_get_handle(), "gtkblist-unhiding", gtkblist); - gtk_window_present(GTK_WINDOW(gtkblist->window)); + gtk_widget_show(gtkblist->window); } else { if(visibility_manager_count) { - purple_signal_emit(pidgin_blist_get_handle(), "gtkblist-hiding", gtkblist); gtk_widget_hide(gtkblist->window); } else { if (!gtk_widget_get_visible(gtkblist->window))
--- a/pidgin/libpidgin.c Wed Nov 28 04:55:10 2018 +0000 +++ b/pidgin/libpidgin.c Wed Nov 28 04:58:03 2018 +0000 @@ -366,7 +366,11 @@ static void pidgin_activate_cb(GApplication *application, gpointer user_data) { - purple_blist_set_visible(TRUE); + PidginBuddyList *blist = pidgin_blist_get_default_gtk_blist(); + + if (blist != NULL && blist->window != NULL) { + gtk_window_present(GTK_WINDOW(blist->window)); + } } static gint
--- a/pidgin/win32/gtkwin32dep.c Wed Nov 28 04:55:10 2018 +0000 +++ b/pidgin/win32/gtkwin32dep.c Wed Nov 28 04:58:03 2018 +0000 @@ -39,6 +39,7 @@ #include "untar.h" #include "gtkwin32dep.h" +#include "gtkblist.h" #include "gtkconv.h" #include "gtkconn.h" #include "util.h" @@ -237,8 +238,12 @@ static LRESULT CALLBACK message_window_handler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { if (msg == PIDGIN_WM_FOCUS_REQUEST) { + PidginBuddyList *blist; purple_debug_info("winpidgin", "Got external Buddy List focus request."); - purple_blist_set_visible(TRUE); + blist = pidgin_blist_get_default_gtk_blist(); + if (blist != NULL && blist->window != NULL) { + gtk_window_present(GTK_WINDOW(blist->window)); + } return TRUE; } else if (msg == PIDGIN_WM_PROTOCOL_HANDLE) { char *proto_msg = (char *) lparam;