diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Ewmh.cc | 2 | ||||
-rw-r--r-- | src/FbTk/XLayer.cc | 2 | ||||
-rw-r--r-- | src/Window.cc | 27 |
3 files changed, 16 insertions, 15 deletions
diff --git a/src/Ewmh.cc b/src/Ewmh.cc index fef4428..0c5e164 100644 --- a/src/Ewmh.cc +++ b/src/Ewmh.cc | |||
@@ -318,7 +318,7 @@ void Ewmh::setupFrame(FluxboxWindow &win) { | |||
318 | * application). Windows of this type may set the | 318 | * application). Windows of this type may set the |
319 | * WM_TRANSIENT_FOR hint indicating the main application window. | 319 | * WM_TRANSIENT_FOR hint indicating the main application window. |
320 | */ | 320 | */ |
321 | win.setDecoration(FluxboxWindow::DECOR_TINY); | 321 | win.setDecoration(FluxboxWindow::DECOR_TOOL); |
322 | win.setIconHidden(true); | 322 | win.setIconHidden(true); |
323 | win.moveToLayer(Layer::ABOVE_DOCK); | 323 | win.moveToLayer(Layer::ABOVE_DOCK); |
324 | } else if (atoms[l] == m_net_wm_window_type_toolbar) { | 324 | } else if (atoms[l] == m_net_wm_window_type_toolbar) { |
diff --git a/src/FbTk/XLayer.cc b/src/FbTk/XLayer.cc index 8e1dfc1..6c44ad9 100644 --- a/src/FbTk/XLayer.cc +++ b/src/FbTk/XLayer.cc | |||
@@ -53,8 +53,6 @@ void XLayer::restack() { | |||
53 | // each LayerItem can contain several windows | 53 | // each LayerItem can contain several windows |
54 | iterator it = itemList().begin(); | 54 | iterator it = itemList().begin(); |
55 | iterator it_end = itemList().end(); | 55 | iterator it_end = itemList().end(); |
56 | it = itemList().begin(); | ||
57 | it_end = itemList().end(); | ||
58 | Window *winlist = new Window[num_windows]; | 56 | Window *winlist = new Window[num_windows]; |
59 | size_t j=0; | 57 | size_t j=0; |
60 | 58 | ||
diff --git a/src/Window.cc b/src/Window.cc index a6f3194..653032e 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -138,18 +138,18 @@ void raiseFluxboxWindow(FluxboxWindow &win) { | |||
138 | if (win.oplock) | 138 | if (win.oplock) |
139 | return; | 139 | return; |
140 | 140 | ||
141 | win.oplock = true; | 141 | if (win.isIconic()) |
142 | return; | ||
142 | 143 | ||
144 | win.oplock = true; | ||
143 | 145 | ||
144 | // we need to lock actual restacking so that raising above active transient | 146 | // we need to lock actual restacking so that raising above active transient |
145 | // won't do anything nasty | 147 | // won't do anything nasty |
146 | if (!win.winClient().transientList().empty()) | 148 | if (!win.winClient().transientList().empty()) |
147 | win.screen().layerManager().lock(); | 149 | win.screen().layerManager().lock(); |
148 | 150 | ||
149 | if (!win.isIconic()) { | 151 | win.screen().updateNetizenWindowRaise(win.clientWindow()); |
150 | win.screen().updateNetizenWindowRaise(win.clientWindow()); | 152 | win.layerItem().raise(); |
151 | win.layerItem().raise(); | ||
152 | } | ||
153 | 153 | ||
154 | // for each transient do raise | 154 | // for each transient do raise |
155 | 155 | ||
@@ -174,6 +174,9 @@ void lowerFluxboxWindow(FluxboxWindow &win) { | |||
174 | if (win.oplock) | 174 | if (win.oplock) |
175 | return; | 175 | return; |
176 | 176 | ||
177 | if (win.isIconic()) | ||
178 | return; | ||
179 | |||
177 | win.oplock = true; | 180 | win.oplock = true; |
178 | 181 | ||
179 | // we need to lock actual restacking so that raising above active transient | 182 | // we need to lock actual restacking so that raising above active transient |
@@ -181,18 +184,18 @@ void lowerFluxboxWindow(FluxboxWindow &win) { | |||
181 | if (!win.winClient().transientList().empty()) | 184 | if (!win.winClient().transientList().empty()) |
182 | win.screen().layerManager().lock(); | 185 | win.screen().layerManager().lock(); |
183 | 186 | ||
184 | if (!win.isIconic()) { | 187 | // lower the windows from the top down, so they don't change stacking order |
185 | win.screen().updateNetizenWindowLower(win.clientWindow()); | 188 | WinClient::TransientList::const_reverse_iterator it = win.winClient().transientList().rbegin(); |
186 | win.layerItem().lower(); | 189 | WinClient::TransientList::const_reverse_iterator it_end = win.winClient().transientList().rend(); |
187 | } | ||
188 | |||
189 | WinClient::TransientList::const_iterator it = win.winClient().transientList().begin(); | ||
190 | WinClient::TransientList::const_iterator it_end = win.winClient().transientList().end(); | ||
191 | for (; it != it_end; ++it) { | 190 | for (; it != it_end; ++it) { |
192 | if ((*it)->fbwindow() && !(*it)->fbwindow()->isIconic()) | 191 | if ((*it)->fbwindow() && !(*it)->fbwindow()->isIconic()) |
193 | // TODO: should we also check if it is the active client? | 192 | // TODO: should we also check if it is the active client? |
194 | lowerFluxboxWindow(*(*it)->fbwindow()); | 193 | lowerFluxboxWindow(*(*it)->fbwindow()); |
195 | } | 194 | } |
195 | |||
196 | win.screen().updateNetizenWindowLower(win.clientWindow()); | ||
197 | win.layerItem().lower(); | ||
198 | |||
196 | win.oplock = false; | 199 | win.oplock = false; |
197 | if (!win.winClient().transientList().empty()) | 200 | if (!win.winClient().transientList().empty()) |
198 | win.screen().layerManager().unlock(); | 201 | win.screen().layerManager().unlock(); |