all repos — fluxbox @ def26c19e5b787916104c03f5540e5b3a44004eb

custom fork of the fluxbox windowmanager

fix restacking while cycling
markt markt
commit

def26c19e5b787916104c03f5540e5b3a44004eb

parent

85b2664d78d9acf8010c1e0978458b91a8260696

2 files changed, 9 insertions(+), 9 deletions(-)

jump to
M src/FocusControl.ccsrc/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.ccsrc/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