g_hash_table_remove(menu_map, &self->frame);
g_hash_table_remove(menu_map, &self->items);
+ stacking_remove(self);
+
appearance_free(self->a_title);
XDestroyWindow(ob_display, self->title);
XDestroyWindow(ob_display, self->frame);
a->data.execute.path = g_strdup("xeyes");
menu_add_entry(t, menu_entry_new("xeyes", a));
menu_add_entry(m, menu_entry_new_submenu("timed", t));
-
+
s = menu_new("empty", "chub", m);
menu_add_entry(m, menu_entry_new_submenu("empty", s));
menu_add_entry(s, menu_entry_new("exit", a));
menu_add_entry(m, menu_entry_new_submenu("long", s));
-
- m = menu_new("client menu", "client", NULL);
+
+ m = menu_new(NULL, "client", NULL);
a = action_from_string("iconify");
menu_add_entry(m, menu_entry_new("iconify", a));
a = action_from_string("toggleshade");
Menu *self;
self = g_new0(Menu, 1);
+ self->obwin.type = Window_Menu;
self->label = g_strdup(label);
self->name = g_strdup(name);
self->parent = parent;
g_hash_table_insert(menu_map, &self->title, self);
g_hash_table_insert(menu_map, &self->items, self);
g_hash_table_insert(menu_hash, g_strdup(name), self);
+
+ stacking_add(self);
+ stacking_raise(MENU_AS_WINDOW(self));
+
return self;
}
{
XSetWindowAttributes attrib;
- g_assert(menu != NULL && entry != NULL && entry->item == None);
+ g_assert(menu != NULL);
+ g_assert(entry != NULL);
+ g_assert(entry->item == None);
menu->entries = g_list_append(menu->entries, entry);
entry->parent = menu;
menu_entry_free(entry);
}
self->entries = NULL;
+ self->invalid = TRUE;
}
MIN(y, screen_physical_size.height - self->size.height));
if (!self->shown) {
- stacking_raise_internal(self->frame);
XMapWindow(ob_display, self->frame);
+ stacking_raise(MENU_AS_WINDOW(self));
self->shown = TRUE;
} else if (self->shown && self->open_submenu) {
menu_hide(self->open_submenu);