summaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-07-10 22:24:48 +0000
committerDana Jansens <danakj@orodu.net>2002-07-10 22:24:48 +0000
commit9e99a9a1e21b7b7214b17a759e58efd00b254551 (patch)
treea5068122443613e868a117fe76cc0fcde07f164e /src/Screen.cc
parentb21cf8b33520e44611657e2876131b67dc0472d6 (diff)
sync with bb cvs
Diffstat (limited to 'src/Screen.cc')
-rw-r--r--src/Screen.cc55
1 files changed, 26 insertions, 29 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index 1b3860f4..cebd21c0 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -1015,41 +1015,38 @@ unsigned int BScreen::removeLastWorkspace(void) {
void BScreen::changeWorkspaceID(unsigned int id) {
- if (! current_workspace) return;
-
- if (id != current_workspace->getID()) {
- 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);
- } else {
- // if no window had focus, no need to store a last focus
- current_workspace->setLastFocusedWindow((BlackboxWindow *) 0);
- }
- // when we switch workspaces, unfocus whatever was focused
- blackbox->setFocusedWindow((BlackboxWindow *) 0);
+ if (! current_workspace || id == current_workspace->getID()) return;
+
+ BlackboxWindow *focused = blackbox->getFocusedWindow();
+ if (focused && focused->getScreen() == this) {
+ assert(focused->isStuck() ||
+ focused->getWorkspaceNumber() == current_workspace->getID());
+
+ current_workspace->setLastFocusedWindow(focused);
+ } else {
+ // if no window had focus, no need to store a last focus
+ current_workspace->setLastFocusedWindow((BlackboxWindow *) 0);
+ }
+
+ // when we switch workspaces, unfocus whatever was focused
+ blackbox->setFocusedWindow((BlackboxWindow *) 0);
- current_workspace->hideAll();
- workspacemenu->setItemSelected(current_workspace->getID() + 2, False);
+ current_workspace->hideAll();
+ workspacemenu->setItemSelected(current_workspace->getID() + 2, False);
- current_workspace = getWorkspace(id);
+ current_workspace = getWorkspace(id);
- xatom->setValue(getRootWindow(), XAtom::net_current_desktop,
- XAtom::cardinal, id);
+ xatom->setValue(getRootWindow(), XAtom::net_current_desktop,
+ XAtom::cardinal, id);
- workspacemenu->setItemSelected(current_workspace->getID() + 2, True);
- toolbar->redrawWorkspaceLabel(True);
+ workspacemenu->setItemSelected(current_workspace->getID() + 2, True);
+ toolbar->redrawWorkspaceLabel(True);
- current_workspace->showAll();
+ current_workspace->showAll();
- if (resource.focus_last && current_workspace->getLastFocusedWindow()) {
- XSync(blackbox->getXDisplay(), False);
- current_workspace->getLastFocusedWindow()->setInputFocus();
- }
+ if (resource.focus_last && current_workspace->getLastFocusedWindow()) {
+ XSync(blackbox->getXDisplay(), False);
+ current_workspace->getLastFocusedWindow()->setInputFocus();
}
updateNetizenCurrentWorkspace();