diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-06-03 17:58:21 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-06-03 17:58:21 +0000 |
| commit | 097d02d9d3d4b2eeea11084c54812de9cd7d14c0 (patch) | |
| tree | 9d98e84f863f7b27a562cfa6a069dc609bf1e0bf /openbox/event.c | |
| parent | e61ad3581fa4e640c32fb78408a17712a7155aa1 (diff) | |
add <underMouse> focus option
Diffstat (limited to 'openbox/event.c')
| -rw-r--r-- | openbox/event.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/openbox/event.c b/openbox/event.c index 6b372a85..a45d070d 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1031,6 +1031,7 @@ static void event_handle_client(ObClient *client, XEvent *e) gint x, y, w, h; gboolean move = FALSE; gboolean resize = FALSE; + gboolean restack = FALSE; /* get the current area */ RECT_TO_DIMS(client->area, x, y, w, h); @@ -1068,8 +1069,9 @@ static void event_handle_client(ObClient *client, XEvent *e) } /* activate it rather than just focus it */ - stacking_restack_request(client, sibling, - e->xconfigurerequest.detail, TRUE); + restack = stacking_restack_request(client, sibling, + e->xconfigurerequest.detail, + TRUE); /* if a stacking change moves the window without resizing */ move = TRUE; @@ -1169,8 +1171,10 @@ static void event_handle_client(ObClient *client, XEvent *e) client_configure(client, x, y, w, h, FALSE, TRUE); } - /* ignore enter events caused by these like ob actions do */ - event_ignore_all_queued_enters(); + if (!restack || !config_focus_under_mouse) { + /* ignore enter events caused by these like ob actions do */ + event_ignore_all_queued_enters(); + } } break; } @@ -1265,8 +1269,10 @@ static void event_handle_client(ObClient *client, XEvent *e) client_set_state(client, e->xclient.data.l[0], e->xclient.data.l[1], e->xclient.data.l[2]); - /* ignore enter events caused by these like ob actions do */ - event_ignore_all_queued_enters(); + if (!config_focus_under_mouse) { + /* ignore enter events caused by these like ob actions do */ + event_ignore_all_queued_enters(); + } } else if (msgtype == prop_atoms.net_close_window) { ob_debug("net_close_window for 0x%lx\n", client->window); client_close(client); |
