Add hildon_app_menu_has_visible_children() private method
authorClaudio Saavedra <csaavedra@igalia.com>
Thu, 10 Sep 2009 09:48:37 +0000 (12:48 +0300)
committerClaudio Saavedra <csaavedra@igalia.com>
Fri, 11 Sep 2009 16:59:32 +0000 (19:59 +0300)
* hildon/hildon-app-menu-private.h: Add below private method.
* hildon/hildon-app-menu.c: (hildon_app_menu_has_visible_children):
New method to check the visibility of a HildonAppMenu children.

ChangeLog
hildon/hildon-app-menu-private.h
hildon/hildon-app-menu.c

index f776eb3..1c1cd66 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2009-09-10  Claudio Saavedra  <csaavedra@igalia.com>
+
+       Add hildon_app_menu_has_visible_children() private method
+
+       * hildon/hildon-app-menu-private.h: Add below private method.
+       * hildon/hildon-app-menu.c: (hildon_app_menu_has_visible_children):
+       New method to check the visibility of a HildonAppMenu children.
+
 2009-09-09  Claudio Saavedra  <csaavedra@igalia.com>
 
        Set the window menu flag for application-common menus
index 9ca1a30..0588b50 100644 (file)
@@ -50,6 +50,9 @@ hildon_app_menu_set_parent_window              (HildonAppMenu *self,
 gpointer G_GNUC_INTERNAL
 hildon_app_menu_get_parent_window              (HildonAppMenu *self);
 
+gboolean G_GNUC_INTERNAL
+hildon_app_menu_has_visible_children (HildonAppMenu *menu);
+
 G_END_DECLS
 
 #endif /* __HILDON_APP_MENU_PRIVATE_H__ */
index 73ab87d..243c173 100644 (file)
@@ -803,6 +803,37 @@ hildon_app_menu_repack_items                    (HildonAppMenu *menu,
 }
 
 /**
+ * hildon_app_menu_has_visible_children:
+ * @menu: a #HildonAppMenu
+ *
+ * Returns whether this menu has any visible items
+ * and/or filters. If this is %FALSE, the menu will
+ * not be popped up.
+ *
+ * Returns: whether there are visible items or filters
+ *
+ * Since: 2.2
+ **/
+gboolean
+hildon_app_menu_has_visible_children (HildonAppMenu *menu)
+{
+   HildonAppMenuPrivate *priv;
+   GList *i;
+   gboolean show_menu = FALSE;
+
+    priv = HILDON_APP_MENU_GET_PRIVATE (menu);
+
+    /* Don't show menu if it doesn't contain visible items */
+    for (i = priv->buttons; i && !show_menu; i = i->next)
+        show_menu = GTK_WIDGET_VISIBLE (i->data);
+
+    for (i = priv->filters; i && !show_menu; i = i->next)
+           show_menu = GTK_WIDGET_VISIBLE (i->data);
+
+    return show_menu;
+}
+
+/**
  * hildon_app_menu_popup:
  * @menu: a #HildonAppMenu
  * @parent_window: a #GtkWindow
@@ -816,23 +847,10 @@ void
 hildon_app_menu_popup                           (HildonAppMenu *menu,
                                                  GtkWindow     *parent_window)
 {
-    HildonAppMenuPrivate *priv;
-    gboolean show_menu = FALSE;
-    GList *i;
-
     g_return_if_fail (HILDON_IS_APP_MENU (menu));
     g_return_if_fail (GTK_IS_WINDOW (parent_window));
 
-    priv = HILDON_APP_MENU_GET_PRIVATE (menu);
-
-    /* Don't show menu if it doesn't contain visible items */
-    for (i = priv->buttons; i && !show_menu; i = i->next)
-        show_menu = GTK_WIDGET_VISIBLE (i->data);
-
-    for (i = priv->filters; i && !show_menu; i = i->next)
-        show_menu = GTK_WIDGET_VISIBLE (i->data);
-
-    if (show_menu) {
+    if (hildon_app_menu_has_visible_children (menu)) {
         hildon_app_menu_set_parent_window (menu, parent_window);
         gtk_widget_show (GTK_WIDGET (menu));
     }