From cf1d868666d4b0e075aeeb6fde8825f55f485f23 Mon Sep 17 00:00:00 2001 From: oblique Date: Sat, 21 Jul 2012 05:09:16 +0300 Subject: [PATCH] handle properly XKeysymToKeycode's return --- dunst.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/dunst.c b/dunst.c index c78921f..bffb148 100644 --- a/dunst.c +++ b/dunst.c @@ -899,12 +899,14 @@ void hide_win() if (key != NoSymbol) { code = XKeysymToKeycode(dc->dpy, key); - XUngrabKey(dc->dpy, code, mask, root); + if (code != NoSymbol) + XUngrabKey(dc->dpy, code, mask, root); } if (all_key != NoSymbol) { code = XKeysymToKeycode(dc->dpy, all_key); - XUngrabKey(dc->dpy, code, mask, root); + if (code != NoSymbol) + XUngrabKey(dc->dpy, code, mask, root); } XUngrabButton(dc->dpy, AnyButton, AnyModifier, win); @@ -978,8 +980,11 @@ void setup(void) /* grab keys */ if (history_key != NoSymbol) { code = XKeysymToKeycode(dc->dpy, history_key); - XGrabKey(dc->dpy, code, mask, root, True, GrabModeAsync, - GrabModeAsync); + if (code == NoSymbol) + fprintf(stderr, "no keycode for keysym '%s'\n", history_key_string); + else + XGrabKey(dc->dpy, code, mask, root, True, GrabModeAsync, + GrabModeAsync); } } @@ -996,14 +1001,20 @@ void map_win(void) root = RootWindow(dc->dpy, DefaultScreen(dc->dpy)); if (key != NoSymbol) { code = XKeysymToKeycode(dc->dpy, key); - XGrabKey(dc->dpy, code, mask, root, True, GrabModeAsync, - GrabModeAsync); + if (code == NoSymbol) + fprintf(stderr, "no keycode for keysym '%s'\n", key_string); + else + XGrabKey(dc->dpy, code, mask, root, True, GrabModeAsync, + GrabModeAsync); } if (all_key != NoSymbol) { code = XKeysymToKeycode(dc->dpy, all_key); - XGrabKey(dc->dpy, code, mask, root, True, GrabModeAsync, - GrabModeAsync); + if (code == NoSymbol) + fprintf(stderr, "no keycode for keysym '%s'\n", all_key_string); + else + XGrabKey(dc->dpy, code, mask, root, True, GrabModeAsync, + GrabModeAsync); } update_screen_info();