summaryrefslogtreecommitdiff
path: root/openbox/event.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-04-16 05:36:51 +0000
committerDana Jansens <danakj@orodu.net>2003-04-16 05:36:51 +0000
commit79a352a40bd16924b1ca3df49f6c82d77e956a0e (patch)
treed4c00749892eac1f11f495a4a9ba3ddc53d901f3 /openbox/event.c
parent59c3cce4f49f04ed2c2937e7de24255dd53df487 (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.c27
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;
+ }
+}