summaryrefslogtreecommitdiff
path: root/util/epist/screen.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-07-20 10:03:42 +0000
committerDana Jansens <danakj@orodu.net>2002-07-20 10:03:42 +0000
commit348c8bff112604da741b0e109bda9b5af7672db4 (patch)
tree6823b7160783e010c8232c55b7a9c8d64cab8043 /util/epist/screen.cc
parenta9dfa0439bd8d4f525d5b41a22a3eb14b94d1200 (diff)
add cycling of next/prev window of class
Diffstat (limited to 'util/epist/screen.cc')
-rw-r--r--util/epist/screen.cc19
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();