diff options
| author | Scott Moynes <smoynes@nexus.carleton.ca> | 2003-03-24 21:54:47 +0000 |
|---|---|---|
| committer | Scott Moynes <smoynes@nexus.carleton.ca> | 2003-03-24 21:54:47 +0000 |
| commit | 3443454f33f88e10f187b78594ecfb5c09e1448d (patch) | |
| tree | 6eca175cd4844b677ab7eba73aa9854f0e25c5a2 /openbox/menu.c | |
| parent | 3bbe809596b0c1ee9acb7695c4c80bfb4fc593df (diff) | |
Added some menu structure.
Diffstat (limited to 'openbox/menu.c')
| -rw-r--r-- | openbox/menu.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/openbox/menu.c b/openbox/menu.c new file mode 100644 index 00000000..bd6cf065 --- /dev/null +++ b/openbox/menu.c @@ -0,0 +1,53 @@ +#include <glib.h> +#include "menu.h" + +Menu *menu_new(char *label, Menu *parent) +{ + Menu *new_menu = g_new(Menu, 1); + new_menu->label = g_strdup(lable); + new_menu->parent = parent; + + new_menu->entries = NULL; + new_menu->tail = NULL; + new_menu->shown = FALSE; + new_menu->invalid = FALSE; + /* default controllers? */ + + return new_menu; +} + +MenuEntry *menu_entry_new_full(char *label, Action *action, + MenuEntryRenderType render_type, + gpointer render_data, gpointer submenu) +{ + MenuEntry *menu_entry = g_new(MenuEntry, 1); + + menu_entry->label = g_strdup(label); + menu_entry->action.func = action->func; + menu_entry->action.data = action->data; //watch out. copying Client * ptr + + menu_entry->render_data = render_data; //watch out. + menu_entry->submenu = submenu; + + return menu_entry; +} + +void menu_entry_set_submenu(MenuEntry *entry, Menu *submenu) +{ + assert(entry != NULL); + + entry->submenu = submenu; + + if(entry->parent != NULL) + entry->parent->invalid = TRUE; +} + +void menu_add_entry(Menu *menu, MenuEntry *entry) +{ + assert(menu != NULL && entry != NULL); + + menu->entries = g_list_append(menu->entries, entry); + entry->parent = menu; + + menu->invalid = TRUE; +} |
