fix restacking while cycling
This commit is contained in:
parent
85b2664d78
commit
def26c19e5
2 changed files with 9 additions and 9 deletions
|
@ -91,14 +91,10 @@ void FocusControl::cycleFocus(int opts, bool cycle_reverse) {
|
||||||
m_cycling_creation_order = (opts & CYCLELINEAR);
|
m_cycling_creation_order = (opts & CYCLELINEAR);
|
||||||
m_was_iconic = false;
|
m_was_iconic = false;
|
||||||
m_cycling_last = 0;
|
m_cycling_last = 0;
|
||||||
} else {
|
} else if (m_cycling_creation_order ^ (bool)(opts & CYCLELINEAR)) {
|
||||||
// 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_creation_order ^= true;
|
||||||
m_cycling_window = find(window_list->begin(),window_list->end(),*m_cycling_window);
|
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
|
// if it is stacked, we want the highest window in the focused list
|
||||||
// that is on the same workspace
|
// that is on the same workspace
|
||||||
FocusedWindows::iterator it = m_cycling_window;
|
FocusedWindows::iterator it = m_cycling_window;
|
||||||
|
@ -130,6 +126,10 @@ void FocusControl::cycleFocus(int opts, bool cycle_reverse) {
|
||||||
// moved onto a new fbwin
|
// moved onto a new fbwin
|
||||||
if (!m_cycling_last || m_cycling_last->fbwindow() != fbwin) {
|
if (!m_cycling_last || m_cycling_last->fbwindow() != fbwin) {
|
||||||
if (m_cycling_last) {
|
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
|
// set back to orig current Client in that fbwin
|
||||||
m_cycling_last->fbwindow()->setCurrentClient(*m_cycling_last, false);
|
m_cycling_last->fbwindow()->setCurrentClient(*m_cycling_last, false);
|
||||||
}
|
}
|
||||||
|
@ -137,8 +137,8 @@ void FocusControl::cycleFocus(int opts, bool cycle_reverse) {
|
||||||
if (m_was_iconic)
|
if (m_was_iconic)
|
||||||
(*m_cycling_window)->fbwindow()->iconify();
|
(*m_cycling_window)->fbwindow()->iconify();
|
||||||
m_was_iconic = fbwin->isIconic();
|
m_was_iconic = fbwin->isIconic();
|
||||||
}
|
|
||||||
fbwin->tempRaise();
|
fbwin->tempRaise();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2101,7 +2101,7 @@ void FluxboxWindow::setFocusFlag(bool focus) {
|
||||||
if (focus != frame().focused())
|
if (focus != frame().focused())
|
||||||
frame().setFocus(focus);
|
frame().setFocus(focus);
|
||||||
|
|
||||||
if (screen().doAutoRaise()) {
|
if (screen().doAutoRaise() && !screen().focusControl().isCycling()) {
|
||||||
if (focused)
|
if (focused)
|
||||||
m_timer.start();
|
m_timer.start();
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue