summaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Screen.cc')
-rw-r--r--src/Screen.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index 8779733c..512475c8 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -1040,10 +1040,14 @@ void BScreen::changeWorkspaceID(unsigned int id) {
workspacemenu->setItemSelected(current_workspace->getID() + 2, False);
- if (blackbox->getFocusedWindow() &&
- blackbox->getFocusedWindow()->getScreen() == this &&
- ! blackbox->getFocusedWindow()->isStuck()) {
- current_workspace->setLastFocusedWindow(blackbox->getFocusedWindow());
+ BlackboxWindow *focused = blackbox->getFocusedWindow();
+ if (focused && focused->getScreen() == this && ! focused->isStuck()) {
+ if (focused->getWorkspaceNumber() != current_workspace->getID()) {
+ fprintf(stderr, "%s is on the wrong workspace, aborting\n",
+ focused->getTitle());
+ abort();
+ }
+ current_workspace->setLastFocusedWindow(focused);
blackbox->setFocusedWindow((BlackboxWindow *) 0);
}
@@ -1079,7 +1083,8 @@ void BScreen::manageWindow(Window w) {
XMapRequestEvent mre;
mre.window = w;
- win->restoreAttributes();
+ if (blackbox->isStartup())
+ win->restoreAttributes();
win->mapRequestEvent(&mre);
}