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);
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 */
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 */
}
#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) ||
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;