diff options
author | markt <markt> | 2006-07-23 01:41:37 (GMT) |
---|---|---|
committer | markt <markt> | 2006-07-23 01:41:37 (GMT) |
commit | def26c19e5b787916104c03f5540e5b3a44004eb (patch) | |
tree | 06259a756a310b156252f9dbb2943c29edaab9cc | |
parent | 85b2664d78d9acf8010c1e0978458b91a8260696 (diff) | |
download | fluxbox_lack-def26c19e5b787916104c03f5540e5b3a44004eb.zip fluxbox_lack-def26c19e5b787916104c03f5540e5b3a44004eb.tar.bz2 |
fix restacking while cycling
-rw-r--r-- | src/FocusControl.cc | 16 | ||||
-rw-r--r-- | src/Window.cc | 2 |
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 |