aboutsummaryrefslogtreecommitdiff
path: root/src/Workspace.cc
diff options
context:
space:
mode:
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);