diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-04-24 20:39:59 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-04-24 20:39:59 +0000 |
| commit | 79cd7b4b2c21c975c441831760708d4919208f6d (patch) | |
| tree | 7a911bad498b0123886cd9727d1f01d296d1c53a /openbox | |
| parent | d19c184b2d83e3f129a085dee721d3fd22b003f1 (diff) | |
dont cause focus change with enter events when youre already in the window
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/event.c | 10 | ||||
| -rw-r--r-- | openbox/frame.c | 8 |
2 files changed, 13 insertions, 5 deletions
diff --git a/openbox/event.c b/openbox/event.c index 2d807aae..c3fab03e 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -761,9 +761,9 @@ static void event_handle_client(ObClient *client, XEvent *e) if (keyboard_interactively_grabbed()) break; if (config_focus_follow && config_focus_delay && - /* leaveinferior events can happen when the mouse goes onto the - window's border and then into the window before the delay - is up */ + /* leave inferior events can happen when the mouse goes onto + the window's border and then into the window before the + delay is up */ e->xcrossing.detail != NotifyInferior) { ob_main_loop_timeout_remove_data(ob_main_loop, @@ -810,7 +810,9 @@ static void event_handle_client(ObClient *client, XEvent *e) if (keyboard_interactively_grabbed()) break; if (e->xcrossing.mode == NotifyGrab || - e->xcrossing.mode == NotifyUngrab) + e->xcrossing.mode == NotifyUngrab || + /*ignore enters when we're already in the window */ + e->xcrossing.detail == NotifyInferior) { ob_debug_type(OB_DEBUG_FOCUS, "%sNotify mode %d detail %d on %lx IGNORED\n", diff --git a/openbox/frame.c b/openbox/frame.c index eb223f64..cdacf101 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -36,6 +36,12 @@ #define ELEMENT_EVENTMASK (ButtonPressMask | ButtonReleaseMask | \ ButtonMotionMask | \ EnterWindowMask | LeaveWindowMask) +/* The inner window does not need enter/leave events. + If it does get them, then it needs its own context for enter events + because sloppy focus will focus the window when you enter the inner window + from the frame. */ +#define INNER_EVENTMASK (ButtonPressMask | ButtonReleaseMask | \ + ButtonMotionMask) #define FRAME_HANDLE_Y(f) (f->innersize.top + f->client->area.height + \ f->cbwidth_y) @@ -100,7 +106,7 @@ ObFrame *frame_new(ObClient *client) self->window = createWindow(RootWindow(ob_display, ob_screen), visual, mask, &attrib); - attrib.event_mask = ELEMENT_EVENTMASK; + attrib.event_mask = INNER_EVENTMASK; self->inner = createWindow(self->window, visual, mask, &attrib); mask &= ~CWEventMask; |
