diff options
Diffstat (limited to 'src/Screen.cc')
-rw-r--r-- | src/Screen.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/Screen.cc b/src/Screen.cc index 9c0182b..1d81191 100644 --- a/src/Screen.cc +++ b/src/Screen.cc | |||
@@ -680,8 +680,13 @@ void BScreen::propertyNotify(Atom atom) { | |||
680 | } | 680 | } |
681 | 681 | ||
682 | void BScreen::keyPressEvent(XKeyEvent &ke) { | 682 | void BScreen::keyPressEvent(XKeyEvent &ke) { |
683 | Fluxbox::instance()->keys()->doAction(ke.type, ke.state, ke.keycode, | 683 | if (Fluxbox::instance()->keys()->doAction(ke.type, ke.state, ke.keycode, |
684 | Keys::GLOBAL|Keys::ON_DESKTOP); | 684 | Keys::GLOBAL|Keys::ON_DESKTOP)) { |
685 | |||
686 | // re-grab keyboard, so we don't pass KeyRelease to clients | ||
687 | // also for catching invalid keys in the middle of keychains | ||
688 | FbTk::EventManager::instance()->grabKeyboard(rootWindow().window()); | ||
689 | } | ||
685 | } | 690 | } |
686 | 691 | ||
687 | void BScreen::keyReleaseEvent(XKeyEvent &ke) { | 692 | void BScreen::keyReleaseEvent(XKeyEvent &ke) { |