From faab62777166b6ac4ca53ef1bd9e2e524d6cb68c Mon Sep 17 00:00:00 2001 From: Michael Carlberg Date: Thu, 15 Dec 2016 21:00:17 +0100 Subject: [PATCH] fix(tray): Ignore restack state --- include/x11/tray_manager.hpp | 2 -- src/x11/tray_manager.cpp | 10 +++++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/include/x11/tray_manager.hpp b/include/x11/tray_manager.hpp index 8b302ab5..2704b5f1 100644 --- a/include/x11/tray_manager.hpp +++ b/include/x11/tray_manager.hpp @@ -154,8 +154,6 @@ class tray_manager : public xpp::event::sink m_drawtime; diff --git a/src/x11/tray_manager.cpp b/src/x11/tray_manager.cpp index e2a568b6..5e7b5e32 100644 --- a/src/x11/tray_manager.cpp +++ b/src/x11/tray_manager.cpp @@ -281,7 +281,6 @@ void tray_manager::deactivate(bool clear_selection) { m_opts.configured_slots = 0; m_acquired_selection = false; m_mapped = false; - m_restacked = false; m_connection.flush(); @@ -601,7 +600,7 @@ void tray_manager::create_bg(bool realloc) { * Put tray window above the defined sibling in the window stack */ void tray_manager::restack_window() { - if (!m_opts.sibling) { + if (m_opts.sibling == XCB_NONE) { return; } @@ -617,7 +616,6 @@ void tray_manager::restack_window() { xutils::pack_values(mask, ¶ms, values); m_connection.configure_window_checked(m_tray, mask, values); - m_restacked = true; } catch (const exception& err) { auto id = m_connection.id(m_opts.sibling); m_log.trace("tray: Failed to put tray above %s in the stack (%s)", id, err.what()); @@ -1128,10 +1126,12 @@ bool tray_manager::on(const visibility_change& evt) { bool visible{*evt()}; size_t clients{mapped_clients()}; - m_log.trace("tray: visibility_change %d", visible); + m_log.trace("tray: visibility_change (state=%i, activated=%i, mapped=%i, hidden=%i)", visible, + static_cast(m_activated), static_cast(m_mapped), static_cast(m_hidden)); + m_hidden = !visible; - if (!m_activated || m_restacked) { + if (!m_activated) { return false; } else if (!m_hidden && !m_mapped && clients) { m_connection.map_window(m_tray);