Merge branch 'backport' into work
[dana/openbox.git] / openbox / menu.c
index f6d19d0..432aa2b 100644 (file)
@@ -35,6 +35,7 @@
 #include "client_list_combined_menu.h"
 #include "gettext.h"
 #include "obt/parse.h"
+#include "obt/paths.h"
 
 typedef struct _ObMenuParseState ObMenuParseState;
 
@@ -97,7 +98,7 @@ void menu_startup(gboolean reconfig)
             obt_parse_tree_from_root(menu_parse_inst);
             obt_parse_close(menu_parse_inst);
         } else
-            g_message(_("Unable to find a valid menu file '%s'"),
+            g_message(_("Unable to find a valid menu file \"%s\""),
                       (const gchar*)it->data);
     }
     if (!loaded) {
@@ -109,7 +110,7 @@ void menu_startup(gboolean reconfig)
             obt_parse_tree_from_root(menu_parse_inst);
             obt_parse_close(menu_parse_inst);
         } else
-            g_message(_("Unable to find a valid menu file '%s'"),
+            g_message(_("Unable to find a valid menu file \"%s\""),
                       "menu.xml");
     }
 
@@ -158,7 +159,6 @@ void menu_clear_pipe_caches(void)
 
 void menu_pipe_execute(ObMenu *self)
 {
-    xmlNodePtr node;
     gchar *output;
     GError *err = NULL;
 
@@ -168,7 +168,7 @@ void menu_pipe_execute(ObMenu *self)
         return;
 
     if (!g_spawn_command_line_sync(self->execute, &output, NULL, NULL, &err)) {
-        g_message(_("Failed to execute command for pipe-menu '%s': %s"),
+        g_message(_("Failed to execute command for pipe-menu \"%s\": %s"),
                   self->execute, err->message);
         g_error_free(err);
         return;
@@ -179,10 +179,10 @@ void menu_pipe_execute(ObMenu *self)
     {
         menu_parse_state.pipe_creator = self;
         menu_parse_state.parent = self;
-        obt_parse_tree(menu_parse_inst, node->children);
+        obt_parse_tree_from_root(menu_parse_inst);
         obt_parse_close(menu_parse_inst);
     } else {
-        g_message(_("Invalid output from pipe-menu '%s'"), self->execute);
+        g_message(_("Invalid output from pipe-menu \"%s\""), self->execute);
     }
 
     g_free(output);
@@ -195,7 +195,7 @@ static ObMenu* menu_from_name(gchar *name)
     g_assert(name != NULL);
 
     if (!(self = g_hash_table_lookup(menu_hash, name)))
-        g_message(_("Attempted to access menu '%s' but it does not exist"),
+        g_message(_("Attempted to access menu \"%s\" but it does not exist"),
                   name);
     return self;
 }
@@ -315,7 +315,7 @@ static void parse_menu(xmlNodePtr node, gpointer data)
         if ((menu = menu_new(name, title, TRUE, NULL))) {
             menu->pipe_creator = state->pipe_creator;
             if (obt_parse_attr_string(node, "execute", &script)) {
-                menu->execute = parse_expand_tilde(script);
+                menu->execute = obt_paths_expand_tilde(script);
             } else {
                 ObMenu *old;
 
@@ -500,6 +500,7 @@ void menu_entry_unref(ObMenuEntry *self)
     if (self && --self->ref == 0) {
         switch (self->type) {
         case OB_MENU_ENTRY_TYPE_NORMAL:
+            RrImageUnref(self->data.normal.icon);
             g_free(self->data.normal.label);
             while (self->data.normal.actions) {
                 actions_act_unref(self->data.normal.actions->data);