summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarkt <markt>2006-07-23 01:41:37 (GMT)
committermarkt <markt>2006-07-23 01:41:37 (GMT)
commitdef26c19e5b787916104c03f5540e5b3a44004eb (patch)
tree06259a756a310b156252f9dbb2943c29edaab9cc
parent85b2664d78d9acf8010c1e0978458b91a8260696 (diff)
downloadfluxbox_lack-def26c19e5b787916104c03f5540e5b3a44004eb.zip
fluxbox_lack-def26c19e5b787916104c03f5540e5b3a44004eb.tar.bz2
fix restacking while cycling
-rw-r--r--src/FocusControl.cc16
-rw-r--r--src/Window.cc2
2 files changed, 9 insertions, 9 deletions
diff --git a/src/FocusControl.cc b/src/FocusControl.cc
index c4c441e..03f1dc5 100644
--- a/src/FocusControl.cc
+++ b/src/FocusControl.cc
@@ -91,13 +91,9 @@ void FocusControl::cycleFocus(int opts, bool cycle_reverse) {
91 m_cycling_creation_order = (opts & CYCLELINEAR); 91 m_cycling_creation_order = (opts & CYCLELINEAR);
92 m_was_iconic = false; 92 m_was_iconic = false;
93 m_cycling_last = 0; 93 m_cycling_last = 0;
94 } else { 94 } else if (m_cycling_creation_order ^ (bool)(opts & CYCLELINEAR)) {
95 // already cycling, so restack to put windows back in their proper order 95 m_cycling_creation_order ^= true;
96 m_screen.layerManager().restack(); 96 m_cycling_window = find(window_list->begin(),window_list->end(),*m_cycling_window);
97 if (m_cycling_creation_order ^ (bool)(opts & CYCLELINEAR)) {
98 m_cycling_creation_order ^= true;
99 m_cycling_window = find(window_list->begin(),window_list->end(),*m_cycling_window);
100 }
101 } 97 }
102 // if it is stacked, we want the highest window in the focused list 98 // if it is stacked, we want the highest window in the focused list
103 // that is on the same workspace 99 // that is on the same workspace
@@ -130,6 +126,10 @@ void FocusControl::cycleFocus(int opts, bool cycle_reverse) {
130 // moved onto a new fbwin 126 // moved onto a new fbwin
131 if (!m_cycling_last || m_cycling_last->fbwindow() != fbwin) { 127 if (!m_cycling_last || m_cycling_last->fbwindow() != fbwin) {
132 if (m_cycling_last) { 128 if (m_cycling_last) {
129 // already cycling, so restack to put windows back in
130 // their proper order
131 m_screen.layerManager().restack();
132
133 // set back to orig current Client in that fbwin 133 // set back to orig current Client in that fbwin
134 m_cycling_last->fbwindow()->setCurrentClient(*m_cycling_last, false); 134 m_cycling_last->fbwindow()->setCurrentClient(*m_cycling_last, false);
135 } 135 }
@@ -137,8 +137,8 @@ void FocusControl::cycleFocus(int opts, bool cycle_reverse) {
137 if (m_was_iconic) 137 if (m_was_iconic)
138 (*m_cycling_window)->fbwindow()->iconify(); 138 (*m_cycling_window)->fbwindow()->iconify();
139 m_was_iconic = fbwin->isIconic(); 139 m_was_iconic = fbwin->isIconic();
140 fbwin->tempRaise();
140 } 141 }
141 fbwin->tempRaise();
142 break; 142 break;
143 } 143 }
144 } 144 }
diff --git a/src/Window.cc b/src/Window.cc
index aa9a2b7..265d948 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -2101,7 +2101,7 @@ void FluxboxWindow::setFocusFlag(bool focus) {
2101 if (focus != frame().focused()) 2101 if (focus != frame().focused())
2102 frame().setFocus(focus); 2102 frame().setFocus(focus);
2103 2103
2104 if (screen().doAutoRaise()) { 2104 if (screen().doAutoRaise() && !screen().focusControl().isCycling()) {
2105 if (focused) 2105 if (focused)
2106 m_timer.start(); 2106 m_timer.start();
2107 else 2107 else