summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-07-23 01:05:31 +0000
committerDana Jansens <danakj@orodu.net>2002-07-23 01:05:31 +0000
commit4c03637fd1cd5273a030abe38dfffa65c67fd420 (patch)
tree0f867360db55680093dd188f5a315b5c7ce70d49 /src
parentb1874480ae98debabcfe92a6388dd139cd49e49b (diff)
modal transients wouldnt throw their focus up to their arent cuz the parent didnt know the modal dialog was gone yet and would pass it back to them.
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();