dont use an invalid iterator in handleKeypress, also, update _last_active is it needs to be
This commit is contained in:
parent
b81dbf9af6
commit
48a450083d
1 changed files with 9 additions and 6 deletions
|
@ -384,16 +384,19 @@ void screen::handleKeyrelease(const XEvent &) {
|
||||||
// the only keyrelease event we care about (for now) is when we do stacked
|
// the only keyrelease event we care about (for now) is when we do stacked
|
||||||
// cycling and the modifier is released
|
// cycling and the modifier is released
|
||||||
if (_stacked_cycling && _cycling && nothingIsPressed()) {
|
if (_stacked_cycling && _cycling && nothingIsPressed()) {
|
||||||
XWindow *w = *_active;
|
|
||||||
|
|
||||||
// all modifiers have been released. ungrab the keyboard, move the
|
// all modifiers have been released. ungrab the keyboard, move the
|
||||||
// focused window to the top of the Z-order and raise it
|
// focused window to the top of the Z-order and raise it
|
||||||
ungrabModifiers();
|
ungrabModifiers();
|
||||||
|
|
||||||
_clients.remove(w);
|
if (_active != _clients.end()) {
|
||||||
_clients.push_front(w);
|
XWindow *w = *_active;
|
||||||
_active = _clients.begin();
|
bool e = _last_active == _active;
|
||||||
w->raise();
|
_clients.remove(w);
|
||||||
|
_clients.push_front(w);
|
||||||
|
_active = _clients.begin();
|
||||||
|
if (e) _last_active = _active;
|
||||||
|
w->raise();
|
||||||
|
}
|
||||||
|
|
||||||
_cycling = false;
|
_cycling = false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue