From 097d02d9d3d4b2eeea11084c54812de9cd7d14c0 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 3 Jun 2007 17:58:21 +0000 Subject: add focus option --- openbox/event.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'openbox/event.c') 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); -- cgit v1.2.3