summaryrefslogtreecommitdiff
path: root/openbox/menu.c
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@gmail.com>2010-04-16 17:58:20 +0200
committerDana Jansens <danakj@orodu.net>2011-08-01 11:53:29 -0400
commit588aa0790abd0bf6452843c0e3490482e90b3654 (patch)
treeb8c5b5bbf7dcf6aa1605ee811dd9a492d2180637 /openbox/menu.c
parent6ad5f085fa5a38ab8373769cac5cd52839d0a7a5 (diff)
Allow setting icons for submenus
Diffstat (limited to 'openbox/menu.c')
-rw-r--r--openbox/menu.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/openbox/menu.c b/openbox/menu.c
index 6c346e85..daea0b65 100644
--- a/openbox/menu.c
+++ b/openbox/menu.c
@@ -326,6 +326,8 @@ static void parse_menu(xmlNodePtr node, gpointer data)
ObMenuParseState *state = data;
gchar *name = NULL, *title = NULL, *script = NULL;
ObMenu *menu;
+ ObMenuEntry *e;
+ gchar *icon;
if (!obt_xml_attr_string(node, "id", &name))
goto parse_menu_fail;
@@ -349,8 +351,20 @@ static void parse_menu(xmlNodePtr node, gpointer data)
}
}
- if (state->parent)
- menu_add_submenu(state->parent, -1, name);
+ if (state->parent) {
+ e = menu_add_submenu(state->parent, -1, name);
+
+ if (config_menu_show_icons &&
+ obt_xml_attr_string(node, "icon", &icon))
+ {
+ e->data.submenu.icon = RrImageNewFromName(ob_rr_icons, icon);
+
+ if (e->data.submenu.icon)
+ e->data.submenu.icon_alpha = 0xff;
+
+ g_free(icon);
+ }
+ }
parse_menu_fail:
g_free(name);
@@ -534,6 +548,7 @@ void menu_entry_unref(ObMenuEntry *self)
}
break;
case OB_MENU_ENTRY_TYPE_SUBMENU:
+ RrImageUnref(self->data.submenu.icon);
g_free(self->data.submenu.name);
break;
case OB_MENU_ENTRY_TYPE_SEPARATOR: