void WindowlistMenu::keyPressEvent (const XKeyEvent * const e) { unsigned int state = e->state; if (_debug) std::cout << BBTOOL << ": " << "WindowlistMenu: got keyPressEvent!" << std::endl; if (!_honor_modifiers) { state = e->state & ~(LockMask|scrollLockMask|numLockMask); } const Action *it = _keybindings->getAction(e, state, _screen); if (it) { switch (it->type()) { case Action::nextWindow: case Action::nextWindowOnAllWorkspaces: case Action::nextWindowOnAllScreens: case Action::nextWindowOfClass: case Action::nextWindowOfClassOnAllWorkspaces: selectNext(); break; case Action::prevWindow: case Action::prevWindowOnAllWorkspaces: case Action::prevWindowOnAllScreens: case Action::prevWindowOfClass: case Action::prevWindowOfClassOnAllWorkspaces: selectPrevious(); break; default: break; } } // if the user is cancelling the menu/cycle, then set focus back on the // window they started with. if (e->keycode == XKeysymToKeycode(_display, XK_Escape)) { XWindow * win = dynamic_cast<XWindow *>(*_windowList.begin()); win->focus(); } else if (e->keycode == XKeysymToKeycode(_display, XK_Up)) { selectPrevious(false); } else if (e->keycode == XKeysymToKeycode(_display, XK_Down)) { selectNext(false); } bt::Menu::keyPressEvent(e); }
void WindowlistMenu::keyReleaseEvent (const XKeyEvent * const e) { if (_debug) std::cout << BBTOOL << ": " << "WindowlistMenu: got keyReleaseEvent!" << std::endl; if (_screen->nothingIsPressed() ){ // get what window is selected so we can focus it XWindow * win = getSelectedWindow(); bt::Menu::hide(); _screen->keyReleaseEvent(e); // if the user is ending his window-cycling adventure, then raise the window // for him. if (win) win->focus(); } bt::Menu::keyReleaseEvent(e); }