aboutsummaryrefslogtreecommitdiff
path: root/src/Workspace.cc
diff options
context:
space:
mode:
authorMathias Gumz <akira at fluxbox dot org>2011-02-24 15:55:55 (GMT)
committerMathias Gumz <akira at fluxbox dot org>2011-02-24 15:55:55 (GMT)
commit4a161132c2aacdbe4a7039f3f73f870607b5bce0 (patch)
tree7695badf08e849f81f1492dadf4c7ef62dbf959d /src/Workspace.cc
parent09f99a4674a75a201effdc912d79a28c2dad4225 (diff)
downloadfluxbox-4a161132c2aacdbe4a7039f3f73f870607b5bce0.zip
fluxbox-4a161132c2aacdbe4a7039f3f73f870607b5bce0.tar.bz2
better solution for warping transient windows
see #3088856 / 09f99a4674a75a201effdc912d79a28c2dad4225. at the moment this fix looks side-effect free, time will tell.
Diffstat (limited to 'src/Workspace.cc')
-rw-r--r--src/Workspace.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/Workspace.cc b/src/Workspace.cc
index 3da8162..a162b4c 100644
--- a/src/Workspace.cc
+++ b/src/Workspace.cc
@@ -103,7 +103,12 @@ int Workspace::removeWindow(FluxboxWindow *w, bool still_alive) {
103 if (w == 0) 103 if (w == 0)
104 return -1; 104 return -1;
105 105
106 if (w->isFocused() && still_alive) 106 // if w is focused and alive, remove the focus ... except if it
107 // is a transient window. removing the focus from such a window
108 // leads in a wild race between BScreen::reassociateWindow(),
109 // BScreen::changeWorkspaceID(), FluxboxWindow::focus() etc. which
110 // finally leads to crash.
111 if (w->isFocused() && !w->isTransient() && still_alive)
107 FocusControl::unfocusWindow(w->winClient(), true, true); 112 FocusControl::unfocusWindow(w->winClient(), true, true);
108 113
109 m_windowlist.remove(w); 114 m_windowlist.remove(w);