[Xfce4-commits] [panel-plugins/xfce4-statusnotifier-plugin] 02/02: Handle empty menu as no menu

noreply at xfce.org noreply at xfce.org
Fri Oct 27 09:05:10 CEST 2017


This is an automated email from the git hooks/post-receive script.

n   i   n   e   t   l   s       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository panel-plugins/xfce4-statusnotifier-plugin.

commit 7e0c1ff68b4d619b06cb0733e178c074f68aea3d
Author: Viktor Odintsev <ninetls at xfce.org>
Date:   Fri Oct 27 10:03:51 2017 +0300

    Handle empty menu as no menu
---
 panel-plugin/sn-button.c |  2 +-
 panel-plugin/sn-util.c   | 27 +++++++++++++++++++++++++++
 panel-plugin/sn-util.h   |  4 +++-
 3 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/panel-plugin/sn-button.c b/panel-plugin/sn-button.c
index d2a6415..de1a120 100644
--- a/panel-plugin/sn-button.c
+++ b/panel-plugin/sn-button.c
@@ -257,7 +257,7 @@ sn_button_button_press (GtkWidget      *widget,
 
   if ((event->button == 1 && (button->menu_only || menu_is_primary)) || event->button == 3)
     {
-      if (button->menu != NULL)
+      if (button->menu != NULL && sn_container_has_children (button->menu))
         {
           button->menu_deactivate_handler = 
             g_signal_connect_swapped (G_OBJECT (button->menu), "deactivate",
diff --git a/panel-plugin/sn-util.c b/panel-plugin/sn-util.c
index a738d71..59c4656 100644
--- a/panel-plugin/sn-util.c
+++ b/panel-plugin/sn-util.c
@@ -136,3 +136,30 @@ sn_signal_connect_weak_swapped (gpointer     instance,
   return sn_signal_connect_weak_internal (instance, detailed_signal,
                                           c_handler, data, G_CONNECT_SWAPPED);
 }
+
+
+
+static void
+sn_container_has_children_callback (GtkWidget *widget,
+                                    gpointer   user_data)
+{
+  gboolean *has_children = user_data;
+  *has_children = TRUE;
+}
+
+
+
+gboolean
+sn_container_has_children (GtkWidget *widget)
+{
+  gboolean has_children = FALSE;
+
+  if (GTK_IS_CONTAINER (widget))
+    {
+      gtk_container_foreach (GTK_CONTAINER (widget),
+                             sn_container_has_children_callback,
+                             &has_children);
+    }
+
+  return has_children;
+}
diff --git a/panel-plugin/sn-util.h b/panel-plugin/sn-util.h
index 15e0baa..9cf81cb 100644
--- a/panel-plugin/sn-util.h
+++ b/panel-plugin/sn-util.h
@@ -19,7 +19,7 @@
 #ifndef __SN_UTIL_H__
 #define __SN_UTIL_H__
 
-#include <glib-object.h>
+#include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
@@ -33,6 +33,8 @@ gulong                 sn_signal_connect_weak_swapped          (gpointer
                                                                 GCallback                c_handler,
                                                                 gpointer                 data);
 
+gboolean               sn_container_has_children               (GtkWidget               *widget);
+
 G_END_DECLS
 
 #endif /* !__SN_UTIL_H__ */

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list