From: Scott Moynes Date: Sat, 20 Jul 2002 01:44:01 +0000 (+0000) Subject: Added changeWorkspace() and a broken toggleShaded() X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=b4411cb1ef1c25a287181b570e974545e1010530;p=chaz%2Fopenbox Added changeWorkspace() and a broken toggleShaded() --- diff --git a/util/epist/actions.cc b/util/epist/actions.cc index d4beaacb..ac4fc4ab 100644 --- a/util/epist/actions.cc +++ b/util/epist/actions.cc @@ -22,6 +22,7 @@ #include "actions.hh" -Action::Action(enum ActionType type, KeyCode keycode, int modifierMask): - _type(type), _keycode(keycode), _modifierMask(modifierMask) +Action::Action(enum ActionType type, KeyCode keycode, int modifierMask, + int num): _type(type), _keycode(keycode), + _modifierMask(modifierMask), _numberParam(num) { } diff --git a/util/epist/actions.hh b/util/epist/actions.hh index 9a7a6043..09ee523f 100644 --- a/util/epist/actions.hh +++ b/util/epist/actions.hh @@ -47,15 +47,15 @@ public: nextWindow, prevWindow, - nextWindowOnAllDesktops, - prevWindowOnAllDesktops, + nextWindowOnAllWorkspaces, + prevWindowOnAllWorkspaces, nextWindowOfClass, prevWindowOfClass, - changeDesktop, - nextDesktop, - prevDesktop, + changeWorkspace, //done + nextWorkspace, //done + prevWorkspace, //done // these are openbox extensions showRootMenu, @@ -74,13 +74,16 @@ private: enum ActionType _type; const KeyCode _keycode; const int _modifierMask; - + + const int _numberParam; public: inline enum ActionType type() const { return _type;} inline const KeyCode keycode() const { return _keycode; } inline const int modifierMask() const { return _modifierMask; } + inline const int number() const { return _numberParam; } - Action(enum ActionType type, KeyCode keycode, int modifierMask); + Action(enum ActionType type, KeyCode keycode, int modifierMask, + int number = 0); }; typedef std::list ActionList; diff --git a/util/epist/epist.cc b/util/epist/epist.cc index a9d01792..6296fe03 100644 --- a/util/epist/epist.cc +++ b/util/epist/epist.cc @@ -76,14 +76,18 @@ epist::epist(char **argv, char *dpy_name, char *rc_file) ::exit(1); } - _actions.push_back(Action(Action::nextDesktop, + _actions.push_back(Action(Action::nextWorkspace, XKeysymToKeycode(getXDisplay(), XStringToKeysym("Tab")), Mod1Mask)); - _actions.push_back(Action(Action::prevDesktop, + _actions.push_back(Action(Action::prevWorkspace, XKeysymToKeycode(getXDisplay(), XStringToKeysym("Tab")), ControlMask)); + _actions.push_back(Action(Action::shade, + XKeysymToKeycode(getXDisplay(), + XStringToKeysym("F5")), + Mod1Mask)); activateGrabs(); } @@ -92,11 +96,6 @@ epist::~epist() { delete _xatom; } - -// XGrabKey(_epist->getXDisplay(), XKeysymToKeycode(_epist->getXDisplay(), -// XStringToKeysym("F5")), -// Mod1Mask, _root, True, GrabModeAsync, GrabModeAsync); - void epist::activateGrabs() { ScreenList::const_iterator scrit, scrend = _screens.end(); diff --git a/util/epist/screen.cc b/util/epist/screen.cc index d8f05540..afe5b8d1 100644 --- a/util/epist/screen.cc +++ b/util/epist/screen.cc @@ -150,12 +150,18 @@ void screen::handleKeypress(const XEvent &e) { e.xkey.state == it->modifierMask() ) { switch (it->type()) { - case Action::nextDesktop: + case Action::nextWorkspace: cycleWorkspace(true); break; - case Action::prevDesktop: + case Action::prevWorkspace: cycleWorkspace(false); break; + case Action::changeWorkspace: + changeWorkspace(it->number()); + break; + case Action::shade: + toggleShaded((*_active)->window()); + break; } break; } @@ -259,9 +265,7 @@ void screen::updateActiveWindow() { } */ -void screen::cycleWorkspace(const bool forward) { - cout << "blef" << endl; - +void screen::cycleWorkspace(const bool forward) const { unsigned long currentDesktop = 0; unsigned long numDesktops = 0; @@ -272,9 +276,6 @@ void screen::cycleWorkspace(const bool forward) { else --currentDesktop; - cout << currentDesktop << endl; - - _xatom->getValue(_root, XAtom::net_number_of_desktops, XAtom::cardinal, numDesktops); @@ -283,10 +284,15 @@ void screen::cycleWorkspace(const bool forward) { else if (currentDesktop >= numDesktops) currentDesktop = 0; - - _xatom->sendClientMessage(_root, XAtom::net_current_desktop, _root, - currentDesktop); - + changeWorkspace(currentDesktop); } } - + +void screen::changeWorkspace(const int num) const { + _xatom->sendClientMessage(_root, XAtom::net_current_desktop, _root, num); +} + +void screen::toggleShaded(const Window win) const { + _xatom->sendClientMessage(_root, XAtom::net_wm_state, win, 2, + XAtom::net_wm_state_shaded); +} diff --git a/util/epist/screen.hh b/util/epist/screen.hh index 06b2cb09..42e685de 100644 --- a/util/epist/screen.hh +++ b/util/epist/screen.hh @@ -65,7 +65,9 @@ public: void handleKeypress(const XEvent &e); - void cycleWorkspace(const bool forward); + void cycleWorkspace(const bool forward)const; + void changeWorkspace(const int num)const; + void toggleShaded(const Window win) const; }; #endif // __screen_hh