diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-07-20 10:03:42 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-07-20 10:03:42 +0000 |
| commit | 348c8bff112604da741b0e109bda9b5af7672db4 (patch) | |
| tree | 6823b7160783e010c8232c55b7a9c8d64cab8043 /util/epist/screen.cc | |
| parent | a9dfa0439bd8d4f525d5b41a22a3eb14b94d1200 (diff) | |
add cycling of next/prev window of class
Diffstat (limited to 'util/epist/screen.cc')
| -rw-r--r-- | util/epist/screen.cc | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/util/epist/screen.cc b/util/epist/screen.cc index 72ee3435..422ec056 100644 --- a/util/epist/screen.cc +++ b/util/epist/screen.cc @@ -164,11 +164,11 @@ void screen::handleKeypress(const XEvent &e) { return; case Action::nextWindow: - cycleWindow(true, false); + cycleWindow(true); return; case Action::prevWindow: - cycleWindow(false, false); + cycleWindow(false); return; case Action::nextWindowOnAllWorkspaces: @@ -179,6 +179,14 @@ void screen::handleKeypress(const XEvent &e) { cycleWindow(false, true); return; + case Action::nextWindowOfClass: + cycleWindow(true, false, true); + return; + + case Action::prevWindowOfClass: + cycleWindow(false, false, true); + return; + case Action::changeWorkspace: changeWorkspace(it->number()); return; @@ -332,7 +340,8 @@ void screen::updateActiveWindow() { */ -void screen::cycleWindow(const bool forward, const bool alldesktops) const { +void screen::cycleWindow(const bool forward, const bool alldesktops, + const bool sameclass) const { assert(_managed); if (_clients.empty()) return; @@ -354,7 +363,9 @@ void screen::cycleWindow(const bool forward, const bool alldesktops) const { } } while (target == _clients.end() || (*target)->iconic() || - (! alldesktops && (*target)->desktop() != _active_desktop)); + (! alldesktops && (*target)->desktop() != _active_desktop) || + (sameclass && _active != _clients.end() && + (*target)->appClass() != (*_active)->appClass())); if (target != _clients.end()) (*target)->focus(); |
