let you specify the class for cycling windows per class

This commit is contained in:
Dana Jansens 2002-07-20 17:00:36 +00:00
parent 7d67f8557b
commit 6d403febc6
2 changed files with 9 additions and 8 deletions

View file

@ -186,19 +186,19 @@ void screen::handleKeypress(const XEvent &e) {
return; return;
case Action::nextWindowOfClass: case Action::nextWindowOfClass:
cycleWindow(true, false, true); cycleWindow(true, false, true, it->string());
return; return;
case Action::prevWindowOfClass: case Action::prevWindowOfClass:
cycleWindow(false, false, true); cycleWindow(false, false, true, it->string());
return; return;
case Action::nextWindowOfClassOnAllWorkspaces: case Action::nextWindowOfClassOnAllWorkspaces:
cycleWindow(true, true, true); cycleWindow(true, true, true, it->string());
return; return;
case Action::prevWindowOfClassOnAllWorkspaces: case Action::prevWindowOfClassOnAllWorkspaces:
cycleWindow(false, true, true); cycleWindow(false, true, true, it->string());
return; return;
case Action::changeWorkspace: case Action::changeWorkspace:
@ -393,15 +393,15 @@ void screen::execCommand(const std::string &cmd) const {
void screen::cycleWindow(const bool forward, const bool alldesktops, void screen::cycleWindow(const bool forward, const bool alldesktops,
const bool sameclass) const { const bool sameclass, const string &cn) const {
assert(_managed); assert(_managed);
if (_clients.empty()) return; if (_clients.empty()) return;
WindowList::const_iterator target = _active; WindowList::const_iterator target = _active;
string classname; string classname = cn;
if (sameclass && target != _clients.end()) if (sameclass && classname.empty() && target != _clients.end())
classname = (*target)->appClass(); classname = (*target)->appClass();
if (target == _clients.end()) if (target == _clients.end())

View file

@ -74,7 +74,8 @@ public:
void handleKeypress(const XEvent &e); void handleKeypress(const XEvent &e);
void cycleWindow(const bool forward, const bool alldesktops = false, void cycleWindow(const bool forward, const bool alldesktops = false,
const bool sameclass = false) const; const bool sameclass = false,
const std::string &classname = "") const;
void cycleWorkspace(const bool forward, const bool loop = true) const; void cycleWorkspace(const bool forward, const bool loop = true) const;
void changeWorkspace(const int num) const; void changeWorkspace(const int num) const;
void toggleShaded(const Window win) const; void toggleShaded(const Window win) const;