X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=4398c97724d9469d1668fa68245328e30226a8f2;hb=79a352a40bd16924b1ca3df49f6c82d77e956a0e;hp=a9112fdb6c57b4b0896c5deff11516c493ccdb51;hpb=59c3cce4f49f04ed2c2937e7de24255dd53df487;p=chaz%2Fopenbox 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; + } +}