#include "geom.h"
#include "plugin.h"
-static GHashTable *menu_hash = NULL;
-GHashTable *menu_map = NULL;
+GHashTable *menu_hash = NULL;
#define FRAME_EVENTMASK (ButtonPressMask |ButtonMotionMask | EnterWindowMask | \
LeaveWindowMask)
void menu_control_show(Menu *self, int x, int y, Client *client);
-void menu_destroy_hash_key(gpointer data)
+void menu_destroy_hash_key(Menu *menu)
{
- g_free(data);
+ g_free(menu);
}
void menu_destroy_hash_value(Menu *self)
g_free(self->label);
g_free(self->name);
- g_hash_table_remove(menu_map, &self->title);
- g_hash_table_remove(menu_map, &self->frame);
- g_hash_table_remove(menu_map, &self->items);
+ g_hash_table_remove(window_map, &self->title);
+ g_hash_table_remove(window_map, &self->frame);
+ g_hash_table_remove(window_map, &self->items);
stacking_remove(self);
g_free(self->label);
action_free(self->action);
- g_hash_table_remove(menu_map, &self->item);
+ g_hash_table_remove(window_map, &self->item);
appearance_free(self->a_item);
appearance_free(self->a_disabled);
menu_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
menu_destroy_hash_key,
(GDestroyNotify)menu_destroy_hash_value);
- menu_map = g_hash_table_new(g_int_hash, g_int_equal);
- m = menu_new(NULL, "root", NULL);
+ m = menu_new("sex menu", "root", NULL);
a = action_from_string("execute");
a->data.execute.path = g_strdup("xterm");
menu_add_entry(m, menu_entry_new_separator("--"));
a = action_from_string("exit");
menu_add_entry(m, menu_entry_new("exit", a));
+
+ /*
s = menu_new("subsex menu", "submenu", m);
a = action_from_string("execute");
a->data.execute.path = g_strdup("xclock");
menu_add_entry(m, menu_entry_new_submenu("subz", s));
- /*
- t = (Menu *)plugin_create("timed_menu");
- a = action_from_string("execute");
- 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(NULL, "client", NULL);
- a = action_from_string("iconify");
- menu_add_entry(m, menu_entry_new("iconify", a));
- a = action_from_string("toggleshade");
- menu_add_entry(m, menu_entry_new("(un)shade", a));
- a = action_from_string("togglemaximizefull");
- menu_add_entry(m, menu_entry_new("(un)maximize", a));
- a = action_from_string("close");
- menu_add_entry(m, menu_entry_new("close", a));
-
+ */
}
void menu_shutdown()
{
g_hash_table_destroy(menu_hash);
- g_hash_table_destroy(menu_map);
}
static Window createWindow(Window parent, unsigned long mask,
self->a_title = appearance_copy(theme_a_menu_title);
self->a_items = appearance_copy(theme_a_menu);
- g_hash_table_insert(menu_map, &self->frame, self);
- g_hash_table_insert(menu_map, &self->title, self);
- g_hash_table_insert(menu_map, &self->items, self);
+ g_hash_table_insert(window_map, &self->frame, self);
+ g_hash_table_insert(window_map, &self->title, self);
+ g_hash_table_insert(window_map, &self->items, self);
g_hash_table_insert(menu_hash, g_strdup(name), self);
- stacking_add(self);
+ stacking_add(MENU_AS_WINDOW(self));
stacking_raise(MENU_AS_WINDOW(self));
return self;
menu->invalid = TRUE;
- g_hash_table_insert(menu_map, &entry->item, menu);
+ g_hash_table_insert(window_map, &entry->item, menu);
}
void menu_show(char *name, int x, int y, Client *client)
}
}
-
void menu_hide(Menu *self) {
if (self->shown) {
XUnmapWindow(ob_display, self->frame);
menu_entry_free(entry);
}
self->entries = NULL;
+ self->invalid = TRUE;
}
theme_bevel;
menu_show_full(self->submenu, x,
- self->parent->location.y + self->y, NULL);
+ self->parent->location.y + self->y,
+ self->parent->client);
}
}
}