summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Screen.cc9
-rw-r--r--src/Window.cc11
2 files changed, 10 insertions, 10 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index d92973b3..86d425d7 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -1245,12 +1245,6 @@ void BScreen::manageWindow(Window w) {
void BScreen::unmanageWindow(BlackboxWindow *w, bool remap) {
w->restore(remap);
- 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);
@@ -1266,9 +1260,6 @@ 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());
/*
diff --git a/src/Window.cc b/src/Window.cc
index bd2f0c06..722409f9 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -361,9 +361,18 @@ BlackboxWindow::~BlackboxWindow(void) {
if (client.transient_for != (BlackboxWindow *) ~0ul) {
client.transient_for->client.transientList.remove(this);
}
- client.transient_for = (BlackboxWindow*) 0;
+ // we save our transient_for though because the workspace will use it
+ // when determining the next window to get focus
}
+ if (blackbox_attrib.workspace != BSENTINEL &&
+ window_number != BSENTINEL)
+ screen->getWorkspace(blackbox_attrib.workspace)->removeWindow(this);
+ else if (flags.iconic)
+ screen->removeIcon(this);
+
+ client.transient_for = (BlackboxWindow*) 0;
+
if (client.transientList.size() > 0) {
// reset transient_for for all transients
BlackboxWindowList::iterator it, end = client.transientList.end();