2009-05-25 Alberto Garcia <agarcia@igalia.com>
+ * hildon/hildon-app-menu-private.h
+ * hildon/hildon-app-menu.c (item_visibility_changed)
+ (filter_visibility_changed, hildon_app_menu_show_all)
+ (hildon_app_menu_hide_all, hildon_app_menu_init):
+ Rearrange items just once when gtk_widget_show_all()/hide_all()
+ are used.
+
+2009-05-25 Alberto Garcia <agarcia@igalia.com>
+
* hildon/hildon-app-menu.c
(hildon_app_menu_insert, hildon_app_menu_add_filter):
Don't call gtk_widget_show() on added items.
{
HildonAppMenuPrivate *priv = HILDON_APP_MENU_GET_PRIVATE (menu);
- hildon_app_menu_repack_items (menu, g_list_index (priv->buttons, item));
+ if (! priv->inhibit_repack)
+ hildon_app_menu_repack_items (menu, g_list_index (priv->buttons, item));
}
static void
GParamSpec *arg1,
HildonAppMenu *menu)
{
- hildon_app_menu_repack_filters (menu);
+ HildonAppMenuPrivate *priv = HILDON_APP_MENU_GET_PRIVATE (menu);
+
+ if (! priv->inhibit_repack)
+ hildon_app_menu_repack_filters (menu);
}
static void
static void
hildon_app_menu_show_all (GtkWidget *widget)
{
+ HildonAppMenu *menu = HILDON_APP_MENU (widget);
HildonAppMenuPrivate *priv = HILDON_APP_MENU_GET_PRIVATE (widget);
+ priv->inhibit_repack = TRUE;
+
/* Show children, but not self. */
g_list_foreach (priv->buttons, (GFunc) gtk_widget_show_all, NULL);
g_list_foreach (priv->filters, (GFunc) gtk_widget_show_all, NULL);
+
+ priv->inhibit_repack = FALSE;
+
+ hildon_app_menu_repack_items (menu, 0);
+ hildon_app_menu_repack_filters (menu);
}
static void
hildon_app_menu_hide_all (GtkWidget *widget)
{
+ HildonAppMenu *menu = HILDON_APP_MENU (widget);
HildonAppMenuPrivate *priv = HILDON_APP_MENU_GET_PRIVATE (widget);
+ priv->inhibit_repack = TRUE;
+
/* Hide children, but not self. */
g_list_foreach (priv->buttons, (GFunc) gtk_widget_hide_all, NULL);
g_list_foreach (priv->filters, (GFunc) gtk_widget_hide_all, NULL);
+
+ priv->inhibit_repack = FALSE;
+
+ hildon_app_menu_repack_items (menu, 0);
+ hildon_app_menu_repack_filters (menu);
}
/*
priv->parent_window = NULL;
priv->transfer_window = NULL;
priv->pressed_outside = FALSE;
+ priv->inhibit_repack = FALSE;
priv->buttons = NULL;
priv->filters = NULL;
priv->columns = 2;