From: Gravemind Date: Tue, 23 Oct 2018 13:15:07 +0000 (+0200) Subject: i3bar: Fix i3bar re-hidden by any modifier (#3474) X-Git-Tag: 4.16~7^2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=refs%2Fpull%2F3475%2Fhead;p=i3%2Fi3 i3bar: Fix i3bar re-hidden by any modifier (#3474) The bug was introduced in 4.15-next fe6b3b7474 --- 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(); + } } }