From c40c79538e0b9b873f3f921d0a4473d7dad74566 Mon Sep 17 00:00:00 2001 From: Gravemind Date: Tue, 23 Oct 2018 15:15:07 +0200 Subject: [PATCH] i3bar: Fix i3bar re-hidden by any modifier (#3474) The bug was introduced in 4.15-next fe6b3b7474 --- i3bar/src/xcb.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/i3bar/src/xcb.c b/i3bar/src/xcb.c index f4509c26..39368c88 100644 --- a/i3bar/src/xcb.c +++ b/i3bar/src/xcb.c @@ -1106,13 +1106,16 @@ void xcb_prep_cb(struct ev_loop *loop, ev_prepare *watcher, int revents) { xcb_xkb_state_notify_event_t *state = (xcb_xkb_state_notify_event_t *)event; const uint32_t mod = (config.modifier & 0xFFFF); - mod_pressed = (mod != 0 && (state->mods & mod) == mod); - if (state->xkbType == XCB_XKB_STATE_NOTIFY && config.modifier != XCB_NONE) { - if (mod_pressed) { - activated_mode = false; - unhide_bars(); - } else if (!activated_mode) { - hide_bars(); + const bool new_mod_pressed = (mod != 0 && (state->mods & mod) == mod); + if (new_mod_pressed != mod_pressed) { + mod_pressed = new_mod_pressed; + if (state->xkbType == XCB_XKB_STATE_NOTIFY && config.modifier != XCB_NONE) { + if (mod_pressed) { + activated_mode = false; + unhide_bars(); + } else if (!activated_mode) { + hide_bars(); + } } } -- 2.39.2