Merged in default (pull request #438)

Wed, 28 Nov 2018 04:58:03 +0000

author
Gary Kramlich <grim@reaperworld.com>
date
Wed, 28 Nov 2018 04:58:03 +0000
changeset 39335
b357de550198
parent 39331
845d3ef390be (current diff)
parent 39334
f71132e8ad06 (diff)
child 39338
7d4e3cd0bbf9

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;

mercurial