[Xfce4-commits] r23283 - in libfrap/trunk/libfrap/menu: . tests
Jannis Pohlmann
jannis at xfce.org
Wed Oct 4 17:35:30 UTC 2006
Author: jannis
Date: 2006-10-04 17:35:30 +0000 (Wed, 04 Oct 2006)
New Revision: 23283
Modified:
libfrap/trunk/libfrap/menu/ChangeLog
libfrap/trunk/libfrap/menu/frap-menu-item.c
libfrap/trunk/libfrap/menu/frap-menu.c
libfrap/trunk/libfrap/menu/tests/test-display-root-menu.c
Log:
* frap-menu-item.c: Revert parts of the previous commit because of
useless checks.
* frap-menu.c: Remove <Deleted /> menus and add notes for other
Modified: libfrap/trunk/libfrap/menu/ChangeLog
===================================================================
--- libfrap/trunk/libfrap/menu/ChangeLog 2006-10-04 17:05:57 UTC (rev 23282)
+++ libfrap/trunk/libfrap/menu/ChangeLog 2006-10-04 17:35:30 UTC (rev 23283)
@@ -1,5 +1,12 @@
2006-10-04 Jannis Pohlmann <jannis at xfce.org>
+ * frap-menu-item.c: Revert parts of the previous commit because of
+ useless checks.
+ * frap-menu.c: Remove <Deleted /> menus and add notes for other
+ merge actions to be implemented.
+
+2006-10-04 Jannis Pohlmann <jannis at xfce.org>
+
* frap-menu-item.c: Make property assignment more clean.
2006-10-04 Jannis Pohlmann <jannis at xfce.org>
Modified: libfrap/trunk/libfrap/menu/frap-menu-item.c
===================================================================
--- libfrap/trunk/libfrap/menu/frap-menu-item.c 2006-10-04 17:05:57 UTC (rev 23282)
+++ libfrap/trunk/libfrap/menu/frap-menu-item.c 2006-10-04 17:35:30 UTC (rev 23283)
@@ -288,11 +288,11 @@
frap_menu_item_init (FrapMenuItem *item)
{
item->priv = FRAP_MENU_ITEM_GET_PRIVATE (item);
- item->priv->icon_name = NULL;
- item->priv->name = NULL;
- item->priv->command = NULL;
item->priv->desktop_id = NULL;
+ item->priv->name = NULL;
item->priv->filename = NULL;
+ item->priv->command = NULL;
+ item->priv->icon_name = NULL;
item->priv->categories = NULL;
}
@@ -558,8 +558,7 @@
}
/* Assign the new desktop_id */
- if (G_LIKELY (desktop_id != NULL))
- item->priv->desktop_id = g_strdup (desktop_id);
+ item->priv->desktop_id = g_strdup (desktop_id);
/* Notify listeners */
g_object_notify (G_OBJECT (item), "desktop_id");
@@ -596,8 +595,7 @@
}
/* Assign the new filename */
- if (G_LIKELY (filename != NULL))
- item->priv->filename = g_strdup (filename);
+ item->priv->filename = g_strdup (filename);
/* Notify listeners */
g_object_notify (G_OBJECT (item), "filename");
@@ -665,8 +663,7 @@
}
/* Assign new command */
- if (G_LIKELY (command != NULL))
- item->priv->command = g_strdup (command);
+ item->priv->command = g_strdup (command);
/* Notify listeners */
g_object_notify (G_OBJECT (item), "command");
@@ -700,8 +697,7 @@
}
/* Assign new name */
- if (G_LIKELY (name != NULL))
- item->priv->name = g_strdup (name);
+ item->priv->name = g_strdup (name);
/* Notify listeners */
g_object_notify (G_OBJECT (item), "name");
@@ -735,8 +731,7 @@
}
/* Assign new icon name */
- if (G_LIKELY (icon_name != NULL))
- item->priv->icon_name = g_strdup (icon_name);
+ item->priv->icon_name = g_strdup (icon_name);
/* Notify listeners */
g_object_notify (G_OBJECT (item), "icon_name");
Modified: libfrap/trunk/libfrap/menu/frap-menu.c
===================================================================
--- libfrap/trunk/libfrap/menu/frap-menu.c 2006-10-04 17:05:57 UTC (rev 23282)
+++ libfrap/trunk/libfrap/menu/frap-menu.c 2006-10-04 17:35:30 UTC (rev 23283)
@@ -206,6 +206,7 @@
static void frap_menu_resolve_items_from_path (FrapMenu *menu,
const gchar *path,
const gchar *id_prefix);
+static void frap_menu_resolve_deleted (FrapMenu *menu);
@@ -902,8 +903,17 @@
g_list_free (menu_context.menu_stack);
g_list_free (menu_context.rule_stack);
- /* Resolve internals, merge menus (TODO) and determine included/excluded menu items */
+#if 0
+ /* TODO (wrapping all this into another method might make sense, especially
+ * because stuff needs to be re-run after merging. */
+ frap_menu_consolidate_child_menus (menu);
+#endif
frap_menu_resolve_directory (menu);
+#if 0
+ /* TODO */
+ frap_menu_resolve_move (menu);
+#endif
+ frap_menu_resolve_deleted (menu);
frap_menu_resolve_items (menu);
}
@@ -1776,6 +1786,36 @@
+static void
+frap_menu_resolve_deleted (FrapMenu *menu)
+{
+ GSList *iter;
+
+ g_return_if_fail (FRAP_IS_MENU (menu));
+
+ /* Note: There's a limitation here. If the root menu has a <Deleted /> we
+ * can't just free the pointer here. Therefor we just check child menus. */
+
+ for (iter = menu->priv->submenus; iter != NULL; iter = g_slist_next (iter))
+ {
+ FrapMenu *submenu = iter->data;
+
+ /* Remove submenu if it is deleted, otherwise check submenus of the
+ * submenu. */
+ if (G_UNLIKELY (submenu->priv->deleted))
+ {
+ /* Remove submenu from the list ... */
+ menu->priv->submenus = g_slist_remove_link (menu->priv->submenus, iter);
+
+ /* ... and destroy it */
+ g_object_unref (G_OBJECT (submenu));
+ }
+ else
+ frap_menu_resolve_deleted (submenu);
+ }
+}
+
+
static GSList*
frap_menu_get_rules (FrapMenu *menu)
{
@@ -1804,3 +1844,4 @@
return menu->priv->pool;
}
+
Modified: libfrap/trunk/libfrap/menu/tests/test-display-root-menu.c
===================================================================
--- libfrap/trunk/libfrap/menu/tests/test-display-root-menu.c 2006-10-04 17:05:57 UTC (rev 23282)
+++ libfrap/trunk/libfrap/menu/tests/test-display-root-menu.c 2006-10-04 17:35:30 UTC (rev 23283)
@@ -67,8 +67,8 @@
GdkPixbuf*
create_icon_for_item (FrapMenuItem *item)
{
+ GdkPixbuf *pixbuf = NULL;
GtkIconTheme *icon_theme = gtk_icon_theme_get_default ();
- GdkPixbuf *pixbuf = NULL;
const gchar *icon_name = frap_menu_item_get_icon_name (item);
const gchar *item_name = frap_menu_item_get_name (item);
@@ -125,7 +125,7 @@
{
GdkPixbuf *old = pixbuf;
pixbuf = gdk_pixbuf_scale_simple (old, ICON_SIZE, ICON_SIZE, GDK_INTERP_BILINEAR);
- gdk_pixbuf_unref (old);
+ g_object_unref (G_OBJECT (old));
}
/* Print icon name if icon could not be loaded */
@@ -141,10 +141,10 @@
execute_command_for_item (GtkWidget *widget,
FrapMenuItem *item)
{
+ GError *error = NULL;
const gchar *command = frap_menu_item_get_command (item);
gboolean terminal = frap_menu_item_requires_terminal (item);
gboolean startup_notification = frap_menu_item_supports_startup_notification (item);
- GError *error = NULL;
/* Abort if no command was defined for this item */
if (G_UNLIKELY (command == NULL))
@@ -201,9 +201,9 @@
GtkWidget *image;
GSList *iter;
GSList *menus;
- GtkIconTheme *icon_theme = gtk_icon_theme_get_default ();
const gchar *icon_name;
GdkPixbuf *pixbuf;
+ GtkIconTheme *icon_theme = gtk_icon_theme_get_default ();
/* Create sorted copy of the submenu list */
menus = g_slist_sort (g_slist_copy (frap_menu_get_menus (menu)), (GCompareFunc) compare_menus);
More information about the Xfce4-commits
mailing list