summaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Screen.cc')
-rw-r--r--src/Screen.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index 6970fdf6..eee7db10 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -1257,6 +1257,15 @@ void BScreen::manageWindow(Window w) {
void BScreen::unmanageWindow(BlackboxWindow *w, bool remap) {
w->restore(remap);
+ // Remove the modality so that its parent won't try to re-focus the window
+ if (w->isModal()) w->setModal(False);
+
+ if (w->getWorkspaceNumber() != BSENTINEL &&
+ w->getWindowNumber() != BSENTINEL)
+ getWorkspace(w->getWorkspaceNumber())->removeWindow(w);
+ else if (w->isIconic())
+ removeIcon(w);
+
if (w->isNormal()) {
// we don't list non-normal windows as managed windows
windowList.remove(w);
@@ -1272,6 +1281,9 @@ void BScreen::unmanageWindow(BlackboxWindow *w, bool remap) {
assert(it != end); // the window wasnt a desktop window?
}
+ if (blackbox->getFocusedWindow() == w)
+ blackbox->setFocusedWindow((BlackboxWindow *) 0);
+
removeNetizen(w->getClientWindow());
/*