diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-04-16 05:36:51 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-04-16 05:36:51 +0000 |
| commit | 79a352a40bd16924b1ca3df49f6c82d77e956a0e (patch) | |
| tree | d4c00749892eac1f11f495a4a9ba3ddc53d901f3 /openbox/event.c | |
| parent | 59c3cce4f49f04ed2c2937e7de24255dd53df487 (diff) | |
raise menus above clients.
hilight menu entries as the cursor passes over them.
Diffstat (limited to 'openbox/event.c')
| -rw-r--r-- | openbox/event.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/openbox/event.c b/openbox/event.c index a9112fdb..4398c977 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -5,6 +5,7 @@ #include "config.h" #include "screen.h" #include "frame.h" +#include "menu.h" #include "framerender.h" #include "focus.h" #include "stacking.h" @@ -22,6 +23,7 @@ static void event_process(XEvent *e); static void event_handle_root(XEvent *e); static void event_handle_client(Client *c, XEvent *e); +static void event_handle_menu(Menu *menu, XEvent *e); Time event_lasttime = 0; @@ -310,16 +312,20 @@ static void event_process(XEvent *e) { Window window; Client *client; + Menu *menu = NULL; window = event_get_window(e); - client = g_hash_table_lookup(client_map, &window); + if (!(client = g_hash_table_lookup(client_map, &window))) + menu = g_hash_table_lookup(menu_map, &window); event_set_lasttime(e); event_hack_mods(e); if (event_ignore(e, client)) return; /* deal with it in the kernel */ - if (client) + if (menu) + event_handle_menu(menu, e); + else if (client) event_handle_client(client, e); else if (window == ob_root) event_handle_root(e); @@ -700,3 +706,20 @@ static void event_handle_client(Client *client, XEvent *e) #endif } } + +static void event_handle_menu(Menu *menu, XEvent *e) +{ + MenuEntry *entry; + + switch (e->type) { + case EnterNotify: + case LeaveNotify: + g_message("enter/leave"); + entry = menu_find_entry(menu, e->xcrossing.window); + if (entry) { + entry->hilite = e->type == EnterNotify; + menu_entry_render(entry); + } + break; + } +} |
