all repos — openbox @ ff43372da760c84e92ca7a7e9648d09fcfba2cf0

openbox fork - make it a bit more like ryudo

only pass thru events when the menu is open, don't for other stuff
Dana Jansens danakj@orodu.net
commit

ff43372da760c84e92ca7a7e9648d09fcfba2cf0

parent

a70633d42af849e4de2288ec48fa6abe726a484e

M openbox/action.copenbox/action.c

@@ -41,7 +41,7 @@ inline void client_action_start(union ActionData *data)

{ if (config_focus_follow) if (data->any.context != OB_FRAME_CONTEXT_CLIENT && !data->any.button) - grab_pointer(TRUE, OB_CURSOR_NONE); + grab_pointer(TRUE, FALSE, OB_CURSOR_NONE); } inline void client_action_end(union ActionData *data)

@@ -49,7 +49,7 @@ {

if (config_focus_follow) if (data->any.context != OB_FRAME_CONTEXT_CLIENT) { if (!data->any.button) { - grab_pointer(FALSE, OB_CURSOR_NONE); + grab_pointer(FALSE, FALSE, OB_CURSOR_NONE); } else { ObClient *c;
M openbox/event.copenbox/event.c

@@ -393,9 +393,6 @@

static gboolean event_ignore(XEvent *e, ObClient *client) { switch(e->type) { - case EnterNotify: - case LeaveNotify: - return keyboard_interactively_grabbed(); case FocusIn: case FocusOut: if (!wanted_focusevent(e)) {
M openbox/grab.copenbox/grab.c

@@ -26,8 +26,7 @@

#include <glib.h> #include <X11/Xlib.h> -#define GRAB_PTR_MASK (ButtonPressMask | ButtonReleaseMask | \ - PointerMotionMask | EnterWindowMask | LeaveWindowMask) +#define GRAB_PTR_MASK (ButtonPressMask | ButtonReleaseMask | PointerMotionMask) #define GRAB_KEY_MASK (KeyPressMask | KeyReleaseMask) #define MASK_LIST_SIZE 8

@@ -90,15 +89,15 @@

return ret; } -gboolean grab_pointer(gboolean grab, ObCursor cur) +gboolean grab_pointer(gboolean grab, gboolean owner_events, ObCursor cur) { gboolean ret = FALSE; if (grab) { if (pgrabs++ == 0) { - ret = XGrabPointer(ob_display, screen_support_win, - True, GRAB_PTR_MASK, GrabModeAsync, - GrabModeAsync, None, + ret = XGrabPointer(ob_display, screen_support_win, owner_events, + GRAB_PTR_MASK, + GrabModeAsync, GrabModeAsync, None, ob_cursor(cur), event_curtime) == Success; if (!ret) --pgrabs;

@@ -115,13 +114,15 @@ }

return ret; } -gboolean grab_pointer_window(gboolean grab, ObCursor cur, Window win) +gboolean grab_pointer_window(gboolean grab, gboolean owner_events, + ObCursor cur, Window win) { gboolean ret = FALSE; if (grab) { if (pgrabs++ == 0) { - ret = XGrabPointer(ob_display, win, True, GRAB_PTR_MASK, + ret = XGrabPointer(ob_display, win, owner_events, + GRAB_PTR_MASK, GrabModeAsync, GrabModeAsync, None, ob_cursor(cur), event_curtime) == Success;

@@ -179,8 +180,8 @@ {

if (reconfig) return; while (grab_keyboard(FALSE)); - while (grab_pointer(FALSE, OB_CURSOR_NONE)); - while (grab_pointer_window(FALSE, OB_CURSOR_NONE, None)); + while (grab_pointer(FALSE, FALSE, OB_CURSOR_NONE)); + while (grab_pointer_window(FALSE, FALSE, OB_CURSOR_NONE, None)); while (grab_server(FALSE)); }
M openbox/grab.hopenbox/grab.h

@@ -28,8 +28,9 @@ void grab_startup(gboolean reconfig);

void grab_shutdown(gboolean reconfig); gboolean grab_keyboard(gboolean grab); -gboolean grab_pointer(gboolean grab, ObCursor cur); -gboolean grab_pointer_window(gboolean grab, ObCursor cur, Window win); +gboolean grab_pointer(gboolean grab, gboolean owner_events, ObCursor cur); +gboolean grab_pointer_window(gboolean grab, gboolean owner_events, + ObCursor cur, Window win); gint grab_server(gboolean grab); gboolean grab_on_keyboard();
M openbox/keyboard.copenbox/keyboard.c

@@ -166,7 +166,7 @@

if (!interactive_states) { if (!grab_keyboard(TRUE)) return FALSE; - if (!grab_pointer(TRUE, OB_CURSOR_NONE)) { + if (!grab_pointer(TRUE, FALSE, OB_CURSOR_NONE)) { grab_keyboard(FALSE); return FALSE; }

@@ -195,7 +195,7 @@ interactive_states = g_slist_remove(interactive_states, s);

if (!interactive_states) { grab_keyboard(FALSE); - grab_pointer(FALSE, OB_CURSOR_NONE); + grab_pointer(FALSE, FALSE, OB_CURSOR_NONE); keyboard_reset_chains(); } }
M openbox/menuframe.copenbox/menuframe.c

@@ -681,10 +681,10 @@ GList *it;

if (menu_frame_visible == NULL) { /* no menus shown yet */ - if (!grab_pointer(TRUE, OB_CURSOR_POINTER)) + if (!grab_pointer(TRUE, TRUE, OB_CURSOR_POINTER)) return FALSE; if (!grab_keyboard(TRUE)) { - grab_pointer(FALSE, OB_CURSOR_POINTER); + grab_pointer(FALSE, TRUE, OB_CURSOR_POINTER); return FALSE; } }

@@ -809,7 +809,7 @@ menu_frame_visible = g_list_delete_link(menu_frame_visible, it);

if (menu_frame_visible == NULL) { /* last menu shown */ - grab_pointer(FALSE, OB_CURSOR_NONE); + grab_pointer(FALSE, TRUE, OB_CURSOR_NONE); grab_keyboard(FALSE); }
M openbox/moveresize.copenbox/moveresize.c

@@ -164,14 +164,14 @@ cur = OB_CURSOR_MOVE;

else g_assert_not_reached(); - grab_pointer(TRUE, cur); + grab_pointer(TRUE, FALSE, cur); grab_keyboard(TRUE); } void moveresize_end(gboolean cancel) { grab_keyboard(FALSE); - grab_pointer(FALSE, OB_CURSOR_NONE); + grab_pointer(FALSE, FALSE, OB_CURSOR_NONE); popup_hide(popup);