summaryrefslogtreecommitdiff
path: root/openbox/event.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2011-10-04 17:53:54 -0400
committerDana Jansens <danakj@orodu.net>2011-10-05 13:32:08 -0400
commiteea1a9fef91686a511ae0a8590dbb6df02c26470 (patch)
tree484cb169d0ca83df745d5c366c4b52df499abfe5 /openbox/event.c
parent98b02c6b60bbde2a5db026b3ee3e6e6dc44d1a92 (diff)
Fix focus stealing for changing desktops/Use timestamp for user input events
Change the logic for when to allow stealing focus across desktops. - It was possible to call event_time_after() with a CurrentTime in the old code. - It would disallow a user requested change which is crazy. - It would change desktops on you when a new window appeared but this is generally not desirable. event_source_time() is supposed to give the time which the user made things happen. we leave it at 0 for user-input events right now which means stuff like changing desktop doesn't save any timestamp at all. we should use the timestamp from x for user-generated events.
Diffstat (limited to 'openbox/event.c')
-rw-r--r--openbox/event.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/openbox/event.c b/openbox/event.c
index 2dde1329..ba156da6 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -700,6 +700,8 @@ static void event_process(const XEvent *ec, gpointer data)
static guint pressed = 0;
static Window pressed_win = None;
+ event_sourcetime = event_curtime;
+
/* If the button press was on some non-root window, or was physically
on the root window... */
if (window != obt_root(ob_screen) ||
@@ -726,6 +728,8 @@ static void event_process(const XEvent *ec, gpointer data)
else if (e->type == KeyPress || e->type == KeyRelease ||
e->type == MotionNotify)
{
+ event_sourcetime = event_curtime;
+
used = event_handle_user_input(client, e);
if (prompt && !used)