+
+static void event_handle_menu(Menu *menu, XEvent *e)
+{
+ MenuEntry *entry;
+
+ g_message("EVENT %d", e->type);
+ switch (e->type) {
+ case ButtonPress:
+ if (e->xbutton.button == 3)
+ menu_hide(menu);
+ break;
+ case ButtonRelease:
+ if (!menu->shown) break;
+
+/* grab_pointer_window(FALSE, None, menu->frame);*/
+
+ entry = menu_find_entry(menu, e->xbutton.window);
+ if (entry) {
+ int junk;
+ Window wjunk;
+ guint ujunk, b, w, h;
+ XGetGeometry(ob_display, e->xbutton.window,
+ &wjunk, &junk, &junk, &w, &h, &b, &ujunk);
+ if (e->xbutton.x >= (signed)-b &&
+ e->xbutton.y >= (signed)-b &&
+ e->xbutton.x < (signed)(w+b) &&
+ e->xbutton.y < (signed)(h+b)) {
+ menu_entry_fire(entry);
+ }
+ }
+ break;
+ 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;
+ }
+}