[gnome-panel/wip-geiger-menu] panel-action-protocol: reuse existing standalone menu instance



commit 0705379e8972a4042407c461fcc3879082673e53
Author: Sebastian Geiger <sbastig gmx net>
Date:   Sat Apr 25 21:31:02 2020 +0200

    panel-action-protocol: reuse existing standalone menu instance

 gnome-panel/panel-action-protocol.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/gnome-panel/panel-action-protocol.c b/gnome-panel/panel-action-protocol.c
index 97f63850a..0dbee8821 100644
--- a/gnome-panel/panel-action-protocol.c
+++ b/gnome-panel/panel-action-protocol.c
@@ -38,11 +38,15 @@ static Atom atom_gnome_panel_action            = None;
 static Atom atom_gnome_panel_action_main_menu  = None;
 static Atom atom_gnome_panel_action_run_dialog = None;
 
+static GtkWidget *standalone_menu = NULL;
+
 static void
 menu_destroy_cb (GtkWidget   *widget,
                  PanelWidget *panel_widget)
 {
        panel_toplevel_pop_autohide_disabler (panel_widget->toplevel);
+
+       standalone_menu = NULL;
 }
 
 static void
@@ -84,15 +88,16 @@ panel_action_protocol_main_menu (GdkScreen *screen,
                                 guint32    activate_time)
 {
        GSList *panels;
-       GtkWidget *menu;
 
        if (panel_applet_activate_main_menu (activate_time))
                return;
 
        panels = panel_widget_get_panels ();
-       menu = panel_applets_manager_get_standalone_menu ();
 
-       g_signal_connect (menu, "loaded", G_CALLBACK (menu_loaded_cb), panels->data);
+       if (!standalone_menu)
+        standalone_menu = panel_applets_manager_get_standalone_menu ();
+
+       g_signal_connect (standalone_menu, "loaded", G_CALLBACK (menu_loaded_cb), panels->data);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]