X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=ddf78e4fb48e261edd29cea9b0d3a0759d03ff65;hb=ea28a9e7ab6c81547b2730268097c4ad7d814a80;hp=f41140eb7cd07477a1a0d71dd5f7a281511a62d4;hpb=c313b219a226c3b968ff312b96120eef0c527d91;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index f41140eb..ddf78e4f 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -89,6 +89,7 @@ static void event_process(const XEvent *e, gpointer data); static void event_handle_root(XEvent *e); static gboolean event_handle_menu_keyboard(XEvent *e); static gboolean event_handle_menu(XEvent *e); +static void event_handle_prompt(ObPrompt *p, XEvent *e); static void event_handle_dock(ObDock *s, XEvent *e); static void event_handle_dockapp(ObDockApp *app, XEvent *e); static void event_handle_client(ObClient *c, XEvent *e); @@ -477,6 +478,8 @@ static void event_process(const XEvent *ec, gpointer data) break; case Window_Client: client = WINDOW_AS_CLIENT(obwin); + /* events on clients can be events on prompt windows too */ + prompt = client->prompt; break; case Window_Menu: /* not to be used for events */ @@ -644,7 +647,7 @@ static void event_process(const XEvent *ec, gpointer data) else if (window == RootWindow(ob_display, ob_screen)) event_handle_root(e); else if (e->type == MapRequest) - client_manage(window); + client_manage(window, NULL); else if (e->type == MappingNotify) { /* keyboard layout changes for modifier mapping changes. reload the modifier map, and rebind all the key bindings as appropriate */ @@ -704,7 +707,9 @@ static void event_process(const XEvent *ec, gpointer data) } #endif - if (e->type == ButtonPress || e->type == ButtonRelease) { + if (prompt) + event_handle_prompt(prompt, e); + else if (e->type == ButtonPress || e->type == ButtonRelease) { /* If the button press was on some non-root window, or was physically on the root window, then process it */ if (window != RootWindow(ob_display, ob_screen) || @@ -1672,6 +1677,20 @@ static ObMenuFrame* find_active_or_last_menu(void) return ret; } +static void event_handle_prompt(ObPrompt *p, XEvent *e) +{ + switch (e->type) { + case ButtonPress: + case ButtonRelease: + case MotionNotify: + prompt_mouse_event(p, e); + break; + case KeyPress: + prompt_key_event(p, e); + break; + } +} + static gboolean event_handle_menu_keyboard(XEvent *ev) { guint keycode, state;