From bed3cb7a30e5bc3e75bf624dafc2d7d94714ae2f Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Thu, 24 Jan 2008 20:19:33 -0500 Subject: strip non-modifier masks from the keyboard state for keyreleases when xkb is present too --- openbox/event.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'openbox/event.c') diff --git a/openbox/event.c b/openbox/event.c index 025f1188..fba5e86d 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -270,7 +270,8 @@ static void event_hack_mods(XEvent *e) magic. Our X core protocol stuff won't work, so we use this to find what the modifier state is instead. */ if (XkbGetState(ob_display, XkbUseCoreKbd, &xkb_state) == Success) - e->xkey.state = xkb_state.compat_state; + e->xkey.state = + modkeys_only_modifier_masks(xkb_state.compat_state); else #endif { -- cgit v1.2.3 From 41aeb42af13774c11e5a23e51bf56fa053678b5a Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 25 Jan 2008 10:20:21 -0500 Subject: Create fake enter events in fewer situations - avoiding times that you don't actually want them. Ignore event serials without using XSync, so that we aren't doing an XSync 100 times per minute - slow! --- openbox/event.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'openbox/event.c') diff --git a/openbox/event.c b/openbox/event.c index fba5e86d..7d24640c 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1928,8 +1928,7 @@ void event_halt_focus_delay(void) gulong event_start_ignore_all_enters(void) { - XSync(ob_display, FALSE); - return LastKnownRequestProcessed(ob_display); + return NextRequest(ob_display); } static void event_ignore_enter_range(gulong start, gulong end) @@ -1948,13 +1947,12 @@ static void event_ignore_enter_range(gulong start, gulong end) r->start, r->end); /* increment the serial so we don't ignore events we weren't meant to */ - XSync(ob_display, FALSE); + PROP_ERASE(screen_support_win, motif_wm_hints); } void event_end_ignore_all_enters(gulong start) { - XSync(ob_display, FALSE); - event_ignore_enter_range(start, LastKnownRequestProcessed(ob_display)); + event_ignore_enter_range(start, NextRequest(ob_display)); } static gboolean is_enter_focus_event_ignored(XEvent *e) -- cgit v1.2.3 From 8af80aa8dd47090bc418c6cf7e1c3894621566b7 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 26 Jan 2008 13:36:20 -0500 Subject: when ignoring enter events, only ignore up to the current serial (NextRequest()-1). Don't ignore enters that come after this with the next serial. --- openbox/event.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'openbox/event.c') diff --git a/openbox/event.c b/openbox/event.c index 7d24640c..535e9f14 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1952,7 +1952,13 @@ static void event_ignore_enter_range(gulong start, gulong end) void event_end_ignore_all_enters(gulong start) { - event_ignore_enter_range(start, NextRequest(ob_display)); + /* Use (NextRequest-1) so that we ignore up to the current serial only. + Inside event_ignore_enter_range, we increment the serial by one, but if + we ignore that serial too, then any enter events generated by mouse + movement will be ignored until we create some further network traffic. + Instead ignore up to NextRequest-1, then when we increment the serial, + we will be *past* the range of ignored serials */ + event_ignore_enter_range(start, NextRequest(ob_display)-1); } static gboolean is_enter_focus_event_ignored(XEvent *e) -- cgit v1.2.3