diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-07-19 08:13:42 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-07-19 08:13:42 +0000 |
| commit | 0326ac961fb82d8d7aab22e4da1859adeeceb2f7 (patch) | |
| tree | a839ca8781cc6909557a6be9c72e4f785ecabb37 /src | |
| parent | 23da937e01a72cbb7af5108b9620d58cc216d731 (diff) | |
don't try to show windows which are already shown. this also ends up fixing an elusive segfault.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Workspace.cc | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/Workspace.cc b/src/Workspace.cc index 9bbc617f..26b48e42 100644 --- a/src/Workspace.cc +++ b/src/Workspace.cc @@ -184,20 +184,24 @@ void Workspace::focusFallback(const BlackboxWindow *old_window) { void Workspace::showAll(void) { - std::for_each(stackingList.begin(), stackingList.end(), - std::mem_fun(&BlackboxWindow::show)); + BlackboxWindowList::iterator it = stackingList.begin(); + const BlackboxWindowList::iterator end = stackingList.end(); + for (; it != end; ++it) { + BlackboxWindow *bw = *it; + if (! bw->isStuck()) + bw->show(); + } } void Workspace::hideAll(void) { // withdraw in reverse order to minimize the number of Expose events - - BlackboxWindowList lst(stackingList.rbegin(), stackingList.rend()); - - BlackboxWindowList::iterator it = lst.begin(); - const BlackboxWindowList::iterator end = lst.end(); - for (; it != end; ++it) { + BlackboxWindowList::reverse_iterator it = stackingList.rbegin(); + const BlackboxWindowList::reverse_iterator end = stackingList.rend(); + while (it != end) { BlackboxWindow *bw = *it; + ++it; // withdraw removes the current item from the list so we need the next + // iterator before that happens if (! bw->isStuck()) bw->withdraw(); } |
