summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-08-26 22:05:08 +0000
committerDana Jansens <danakj@orodu.net>2002-08-26 22:05:08 +0000
commit48a450083db59085921c79c2bb68dedd0b95821a (patch)
tree84cc1abee32801ff66ffb8107c982550ac48165b /util
parentb81dbf9af620472ac5661a6a778f92a646184ce8 (diff)
dont use an invalid iterator in handleKeypress, also, update _last_active is it needs to be
Diffstat (limited to 'util')
-rw-r--r--util/epist/screen.cc15
1 files changed, 9 insertions, 6 deletions
diff --git a/util/epist/screen.cc b/util/epist/screen.cc
index a67b0a37..c3ea4fb5 100644
--- a/util/epist/screen.cc
+++ b/util/epist/screen.cc
@@ -384,16 +384,19 @@ void screen::handleKeyrelease(const XEvent &) {
// the only keyrelease event we care about (for now) is when we do stacked
// cycling and the modifier is released
if (_stacked_cycling && _cycling && nothingIsPressed()) {
- XWindow *w = *_active;
-
// all modifiers have been released. ungrab the keyboard, move the
// focused window to the top of the Z-order and raise it
ungrabModifiers();
- _clients.remove(w);
- _clients.push_front(w);
- _active = _clients.begin();
- w->raise();
+ if (_active != _clients.end()) {
+ XWindow *w = *_active;
+ bool e = _last_active == _active;
+ _clients.remove(w);
+ _clients.push_front(w);
+ _active = _clients.begin();
+ if (e) _last_active = _active;
+ w->raise();
+ }
_cycling = false;
}