_actions.push_back(Action(Action::nextWorkspace,
XKeysymToKeycode(getXDisplay(),
XStringToKeysym("Tab")),
- Mod1Mask));
+ ControlMask));
_actions.push_back(Action(Action::prevWorkspace,
XKeysymToKeycode(getXDisplay(),
XStringToKeysym("Tab")),
- ControlMask));
- _actions.push_back(Action(Action::shade,
+ ControlMask | ShiftMask));
+ _actions.push_back(Action(Action::toggleshade,
XKeysymToKeycode(getXDisplay(),
XStringToKeysym("F5")),
Mod1Mask));
+ _actions.push_back(Action(Action::nextWindow,
+ XKeysymToKeycode(getXDisplay(),
+ XStringToKeysym("Tab")),
+ Mod1Mask));
+ _actions.push_back(Action(Action::prevWindow,
+ XKeysymToKeycode(getXDisplay(),
+ XStringToKeysym("Tab")),
+ Mod1Mask | ShiftMask));
activateGrabs();
}
cycleWorkspace(false);
return;
+ case Action::nextWindow:
+ cycleWindow(true);
+ return;
+
+ case Action::prevWindow:
+ cycleWindow(false);
+ return;
+
case Action::changeWorkspace:
changeWorkspace(it->number());
return;
XWindow *window = *_active;
switch (it->type()) {
- case Action::shade:
+ case Action::toggleshade:
window->shade(! window->shaded());
return;
}
}
*/
+
+void screen::cycleWindow(const bool forward) const {
+ if (_clients.empty()) return;
+
+ WindowList::const_iterator target = _active;
+
+ if (target == _clients.end())
+ target = _clients.begin();
+
+ do {
+ if (forward) {
+ ++target;
+ if (target == _clients.end())
+ target = _clients.begin();
+ } else {
+ if (target == _clients.begin())
+ target = _clients.end();
+ --target;
+ }
+ } while (target == _clients.end() || (*target)->iconic());
+
+ if (target != _clients.end()) {
+ // we dont send an ACTIVE_WINDOW client message because that would also
+ // unshade the window if it was shaded
+ XSetInputFocus(_epist->getXDisplay(), (*target)->window(), RevertToNone,
+ CurrentTime);
+ XRaiseWindow(_epist->getXDisplay(), (*target)->window());
+ }
+}
+
+
void screen::cycleWorkspace(const bool forward) const {
unsigned long currentDesktop = 0;
unsigned long numDesktops = 0;
}
}
+
void screen::changeWorkspace(const int num) const {
_xatom->sendClientMessage(_root, XAtom::net_current_desktop, _root, num);
}
void handleKeypress(const XEvent &e);
- void cycleWorkspace(const bool forward)const;
- void changeWorkspace(const int num)const;
+ void cycleWindow(const bool forward) const;
+ void cycleWorkspace(const bool forward) const;
+ void changeWorkspace(const int num) const;
void toggleShaded(const Window win) const;
};