diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-07-10 22:24:48 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-07-10 22:24:48 +0000 |
| commit | 9e99a9a1e21b7b7214b17a759e58efd00b254551 (patch) | |
| tree | a5068122443613e868a117fe76cc0fcde07f164e /src/Screen.cc | |
| parent | b21cf8b33520e44611657e2876131b67dc0472d6 (diff) | |
sync with bb cvs
Diffstat (limited to 'src/Screen.cc')
| -rw-r--r-- | src/Screen.cc | 55 |
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(); |
