diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-03-11 04:44:15 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-03-11 04:44:15 +0000 |
| commit | 19b480058e869a588ea20be5e29017ae2052e967 (patch) | |
| tree | ab22ac84def19d7b715505674f132e191e1fbff6 /openbox/event.c | |
| parent | 9d6e3907650f4bc05ebf147aeec92573d7b88758 (diff) | |
wow... this is a big commit...
all related to _NET_WM_USER_TIME and focus stealing prevention
a) add launcher startup notification. this means when you run something from
the openbox menu or a key/mouse binding, that startup notification will go
on in openbox and other applications like your panel or something
b) add the _NET_WM_USER_TIME property for windows
c) use the _NET_WM_USER_TIME data and startup notification to prevent focus
stealing.
d) cookie party !! ! all are invited.
e) oh yeah, and pass around timestamps for a lot more things. like, when you
run an action, send the timestamp for the event that is running the action.
this is important for startup notification. this also affects menus.
f) yes.. cookies..
would it be a good idea to disable focus stealing prevention if a window takes
too long to load? i mean.. maybe after a certain length of time, a user can't be
expected to not do anything in any other windows, but would they still want the
new application to focus then? HMM. open question i guess..
Diffstat (limited to 'openbox/event.c')
| -rw-r--r-- | openbox/event.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/openbox/event.c b/openbox/event.c index 9faf9403..1988f108 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -895,13 +895,17 @@ static void event_handle_client(ObClient *client, XEvent *e) switch (e->xconfigurerequest.detail) { case Below: case BottomIf: - client_lower(client); + /* Apps are so rude. And this is totally disconnected from + activation/focus. Bleh. */ + /*client_lower(client);*/ break; case Above: case TopIf: default: - client_raise(client); + /* Apps are so rude. And this is totally disconnected from + activation/focus. Bleh. */ + /*client_raise(client);*/ break; } } @@ -940,7 +944,7 @@ static void event_handle_client(ObClient *client, XEvent *e) it can happen now when the window is on another desktop, but we still don't want it! */ - client_activate(client, FALSE, TRUE); + client_activate(client, FALSE, TRUE, CurrentTime); break; case ClientMessage: /* validate cuz we query stuff off the client here */ @@ -1002,7 +1006,8 @@ static void event_handle_client(ObClient *client, XEvent *e) /* XXX make use of data.l[1] and [2] ! */ client_activate(client, FALSE, (e->xclient.data.l[0] == 0 || - e->xclient.data.l[0] == 2)); + e->xclient.data.l[0] == 2), + e->xclient.data.l[1]); } else if (msgtype == prop_atoms.net_wm_moveresize) { ob_debug("net_wm_moveresize for 0x%lx\n", client->window); if ((Atom)e->xclient.data.l[2] == @@ -1242,7 +1247,8 @@ static void event_handle_menu(XEvent *ev) if (menu_can_hide) { if ((e = menu_entry_frame_under(ev->xbutton.x_root, ev->xbutton.y_root))) - menu_entry_frame_execute(e, ev->xbutton.state); + menu_entry_frame_execute(e, ev->xbutton.state, + ev->xbutton.time); else menu_frame_hide_all(); } @@ -1272,7 +1278,8 @@ static void event_handle_menu(XEvent *ev) else if (ev->xkey.keycode == ob_keycode(OB_KEY_RETURN)) { ObMenuFrame *f; if ((f = find_active_menu())) - menu_entry_frame_execute(f->selected, ev->xkey.state); + menu_entry_frame_execute(f->selected, ev->xkey.state, + ev->xkey.time); } else if (ev->xkey.keycode == ob_keycode(OB_KEY_LEFT)) { ObMenuFrame *f; if ((f = find_active_or_last_menu()) && f->parent) |
