From a84e558d8286a3c5a717440e2d7b9f0925dc28a0 Mon Sep 17 00:00:00 2001 From: Sascha Kruse Date: Sat, 21 Jul 2012 00:50:27 +0200 Subject: [PATCH] ungrab keyboard when no notification This doesn't apply to history key. --- dunst.c | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/dunst.c b/dunst.c index b94a568..c78921f 100644 --- a/dunst.c +++ b/dunst.c @@ -893,6 +893,20 @@ void run(void) void hide_win() { + KeyCode code; + Window root; + root = RootWindow(dc->dpy, DefaultScreen(dc->dpy)); + + if (key != NoSymbol) { + code = XKeysymToKeycode(dc->dpy, key); + XUngrabKey(dc->dpy, code, mask, root); + } + + if (all_key != NoSymbol) { + code = XKeysymToKeycode(dc->dpy, all_key); + XUngrabKey(dc->dpy, code, mask, root); + } + XUngrabButton(dc->dpy, AnyButton, AnyModifier, win); XUnmapWindow(dc->dpy, win); XFlush(dc->dpy); @@ -962,14 +976,26 @@ void setup(void) CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); /* grab keys */ - if (key != NoSymbol) { - code = XKeysymToKeycode(dc->dpy, key); + if (history_key != NoSymbol) { + code = XKeysymToKeycode(dc->dpy, history_key); XGrabKey(dc->dpy, code, mask, root, True, GrabModeAsync, GrabModeAsync); } - if (history_key != NoSymbol) { - code = XKeysymToKeycode(dc->dpy, history_key); +} + +void map_win(void) +{ + /* window is already mapped or there's nothing to show */ + if (visible || l_is_empty(displayed_notifications)) { + return; + } + + KeyCode code; + Window root; + root = RootWindow(dc->dpy, DefaultScreen(dc->dpy)); + if (key != NoSymbol) { + code = XKeysymToKeycode(dc->dpy, key); XGrabKey(dc->dpy, code, mask, root, True, GrabModeAsync, GrabModeAsync); } @@ -979,14 +1005,6 @@ void setup(void) XGrabKey(dc->dpy, code, mask, root, True, GrabModeAsync, GrabModeAsync); } -} - -void map_win(void) -{ - /* window is already mapped or there's nothing to show */ - if (visible || l_is_empty(displayed_notifications)) { - return; - } update_screen_info();