fix restacking while cycling
markt markt
2 files changed,
9 insertions(+),
9 deletions(-)
M
src/FocusControl.cc
→
src/FocusControl.cc
@@ -91,13 +91,9 @@ m_cycling_window = find(window_list->begin(),window_list->end(),s_focused_window);
m_cycling_creation_order = (opts & CYCLELINEAR); m_was_iconic = false; m_cycling_last = 0; - } else { - // already cycling, so restack to put windows back in their proper order - m_screen.layerManager().restack(); - if (m_cycling_creation_order ^ (bool)(opts & CYCLELINEAR)) { - m_cycling_creation_order ^= true; - m_cycling_window = find(window_list->begin(),window_list->end(),*m_cycling_window); - } + } else if (m_cycling_creation_order ^ (bool)(opts & CYCLELINEAR)) { + m_cycling_creation_order ^= true; + m_cycling_window = find(window_list->begin(),window_list->end(),*m_cycling_window); } // if it is stacked, we want the highest window in the focused list // that is on the same workspace@@ -130,6 +126,10 @@ if (! (doSkipWindow(**it, opts) || !fbwin->setCurrentClient(**it)) ) {
// moved onto a new fbwin if (!m_cycling_last || m_cycling_last->fbwindow() != fbwin) { if (m_cycling_last) { + // already cycling, so restack to put windows back in + // their proper order + m_screen.layerManager().restack(); + // set back to orig current Client in that fbwin m_cycling_last->fbwindow()->setCurrentClient(*m_cycling_last, false); }@@ -137,8 +137,8 @@ m_cycling_last = &last_client;
if (m_was_iconic) (*m_cycling_window)->fbwindow()->iconify(); m_was_iconic = fbwin->isIconic(); + fbwin->tempRaise(); } - fbwin->tempRaise(); break; } }
M
src/Window.cc
→
src/Window.cc
@@ -2101,7 +2101,7 @@
if (focus != frame().focused()) frame().setFocus(focus); - if (screen().doAutoRaise()) { + if (screen().doAutoRaise() && !screen().focusControl().isCycling()) { if (focused) m_timer.start(); else