summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2013-09-09 17:35:10 +0200
committerRené 'Necoro' Neumann <necoro@necoro.net>2013-09-09 17:35:10 +0200
commit2e55d52318f4eb07f1673d79c294abfe82d6276f (patch)
tree64ac8983163480e3075dac4f31b5c668b174b823
parentf57e7733af53165e5113468858ca64c53614f567 (diff)
downloadpatches-2e55d52318f4eb07f1673d79c294abfe82d6276f.tar.gz
patches-2e55d52318f4eb07f1673d79c294abfe82d6276f.tar.bz2
patches-2e55d52318f4eb07f1673d79c294abfe82d6276f.zip
Dunst patches
-rw-r--r--x11-misc/dunst-1.0.0/dunst-1.0.0-fix-pause-resume.patch60
-rw-r--r--x11-misc/dunst-1.0.0/dunst-1.0.0-numlock.patch130
-rw-r--r--x11-misc/dunst-1.0.0/net-wm-window-type.patch54
3 files changed, 244 insertions, 0 deletions
diff --git a/x11-misc/dunst-1.0.0/dunst-1.0.0-fix-pause-resume.patch b/x11-misc/dunst-1.0.0/dunst-1.0.0-fix-pause-resume.patch
new file mode 100644
index 0000000..9955177
--- /dev/null
+++ b/x11-misc/dunst-1.0.0/dunst-1.0.0-fix-pause-resume.patch
@@ -0,0 +1,60 @@
+From 04248fd49ef6769c7dc7e246fc505ad9c70afe27 Mon Sep 17 00:00:00 2001
+From: Sascha Kruse <knopwob@googlemail.com>
+Date: Mon, 22 Apr 2013 20:07:35 +0000
+Subject: [PATCH] fix pause/resume
+
+this fixes github issue #98
+---
+ dunst.c | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/dunst.c b/dunst.c
+index fe67f4b..534a6d2 100644
+--- a/dunst.c
++++ b/dunst.c
+@@ -105,7 +105,7 @@ void update_lists()
+
+ if (pause_display) {
+ while (displayed->length > 0) {
+- g_queue_insert_sorted(queue, g_queue_pop_head(queue),
++ g_queue_insert_sorted(queue, g_queue_pop_head(displayed),
+ notification_cmp_data, NULL);
+ }
+ return;
+@@ -240,16 +240,16 @@ gboolean run(void *data)
+ timeout_cnt--;
+ }
+
+- if (displayed->length > 0 && !xctx.visible) {
+- x_win_show();
++ if (displayed->length > 0 && !xctx.visible && !pause_display) {
++ x_win_show();
+ }
+
+- if (displayed->length == 0 && xctx.visible) {
+- x_win_hide();
++ if (xctx.visible && (pause_display || displayed->length == 0)) {
++ x_win_hide();
+ }
+
+ if (xctx.visible) {
+- x_win_draw();
++ x_win_draw();
+ }
+
+ if (xctx.visible) {
+@@ -355,9 +355,11 @@ void pause_signal_handler(int sig)
+ {
+ if (sig == SIGUSR1) {
+ pause_display = true;
++ wake_up();
+ }
+ if (sig == SIGUSR2) {
+ pause_display = false;
++ wake_up();
+ }
+
+ signal(sig, pause_signal_handler);
+--
+1.8.1.5
+
diff --git a/x11-misc/dunst-1.0.0/dunst-1.0.0-numlock.patch b/x11-misc/dunst-1.0.0/dunst-1.0.0-numlock.patch
new file mode 100644
index 0000000..e6b4d9a
--- /dev/null
+++ b/x11-misc/dunst-1.0.0/dunst-1.0.0-numlock.patch
@@ -0,0 +1,130 @@
+diff --git a/x.c b/x.c
+index 2ad74d3..4248082 100644
+--- a/x.c
++++ b/x.c
+@@ -458,6 +458,53 @@ static void setopacity(Window win, unsigned long opacity)
+
+
+
++ /*
++ * Returns the modifier which is NumLock.
++ */
++static KeySym x_numlock_mod()
++{
++ const KeyCode nl = XKeysymToKeycode(xctx.dpy, XStringToKeysym("Num_Lock"));
++
++ int mod;
++ KeySym sym = 0;
++ XModifierKeymap * map = XGetModifierMapping(xctx.dpy);
++
++ for (mod = 0; mod < 8; mod++) {
++ for (int j = 0; j < map->max_keypermod; j++) {
++ if (map->modifiermap[mod*map->max_keypermod+j] == nl) {
++ switch (mod) {
++ case ShiftMapIndex:
++ sym = ShiftMask;
++ break;
++ case LockMapIndex:
++ sym = LockMask;
++ break;
++ case ControlMapIndex:
++ sym = ControlMask;
++ break;
++ case Mod1MapIndex:
++ sym = Mod1Mask;
++ break;
++ case Mod2MapIndex:
++ sym = Mod2Mask;
++ break;
++ case Mod3MapIndex:
++ sym = Mod3Mask;
++ break;
++ case Mod4MapIndex:
++ sym = Mod4Mask;
++ break;
++ case Mod5MapIndex:
++ sym = Mod5Mask;
++ break;
++ }
++ }
++ }
++ }
++
++ XFreeModifiermap(map);
++ return sym;
++}
+
+ /*
+ * Helper function to use glib's mainloop mechanic
+@@ -488,6 +535,7 @@ gboolean x_mainloop_fd_dispatch(GSource * source, GSourceFunc callback,
+ gpointer user_data)
+ {
+ XEvent ev;
++ unsigned int state;
+ while (XPending(xctx.dpy) > 0) {
+ XNextEvent(xctx.dpy, &ev);
+ switch (ev.type) {
+@@ -508,10 +556,13 @@ gboolean x_mainloop_fd_dispatch(GSource * source, GSourceFunc callback,
+ }
+ break;
+ case KeyPress:
++ state = ev.xkey.state;
++ /* NumLock is also encoded in the state. Remove it. */
++ state &= ~x_numlock_mod();
+ if (settings.close_ks.str
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.close_ks.sym
+- && settings.close_ks.mask == ev.xkey.state) {
++ && settings.close_ks.mask == state) {
+ if (displayed) {
+ notification *n = g_queue_peek_head(displayed);
+ if (n)
+@@ -521,19 +572,19 @@ gboolean x_mainloop_fd_dispatch(GSource * source, GSourceFunc callback,
+ if (settings.history_ks.str
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.history_ks.sym
+- && settings.history_ks.mask == ev.xkey.state) {
++ && settings.history_ks.mask == state) {
+ history_pop();
+ }
+ if (settings.close_all_ks.str
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.close_all_ks.sym
+- && settings.close_all_ks.mask == ev.xkey.state) {
++ && settings.close_all_ks.mask == state) {
+ move_all_to_history();
+ }
+ if (settings.context_ks.str
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.context_ks.sym
+- && settings.context_ks.mask == ev.xkey.state) {
++ && settings.context_ks.mask == state) {
+ context_menu();
+ }
+ break;
+@@ -926,9 +977,12 @@ int x_shortcut_grab(keyboard_shortcut * ks)
+
+ x_shortcut_setup_error_handler();
+
+- if (ks->is_valid)
++ if (ks->is_valid) {
+ XGrabKey(xctx.dpy, ks->code, ks->mask, root,
+ true, GrabModeAsync, GrabModeAsync);
++ XGrabKey(xctx.dpy, ks->code, ks->mask | x_numlock_mod() , root,
++ true, GrabModeAsync, GrabModeAsync);
++ }
+
+ if (x_shortcut_tear_down_error_handler()) {
+ fprintf(stderr, "Unable to grab key \"%s\"\n", ks->str);
+@@ -945,8 +999,10 @@ void x_shortcut_ungrab(keyboard_shortcut * ks)
+ {
+ Window root;
+ root = RootWindow(xctx.dpy, DefaultScreen(xctx.dpy));
+- if (ks->is_valid)
++ if (ks->is_valid) {
+ XUngrabKey(xctx.dpy, ks->code, ks->mask, root);
++ XUngrabKey(xctx.dpy, ks->code, ks->mask | x_numlock_mod(), root);
++ }
+ }
+
+ /*
diff --git a/x11-misc/dunst-1.0.0/net-wm-window-type.patch b/x11-misc/dunst-1.0.0/net-wm-window-type.patch
new file mode 100644
index 0000000..cfd5e8c
--- /dev/null
+++ b/x11-misc/dunst-1.0.0/net-wm-window-type.patch
@@ -0,0 +1,54 @@
+From 41e5976e6da40344aa400f9011529db9c75bf769 Mon Sep 17 00:00:00 2001
+From: Sascha Kruse <knopwob@googlemail.com>
+Date: Tue, 16 Jul 2013 13:30:46 +0200
+Subject: [PATCH] set _NET_WM_WINDOW_TYPE (thanks lexming)
+
+fix #113
+---
+ x.c | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+diff --git a/x.c b/x.c
+index e149f5c..5622f30 100644
+--- a/x.c
++++ b/x.c
+@@ -850,6 +850,27 @@ void x_setup(void)
+ x_win_setup();
+ x_cairo_setup();
+ x_shortcut_grab(&settings.history_ks);
++
++}
++
++
++static void x_set_win_type(Window win)
++{
++
++ long data[2];
++
++ Atom net_wm_window_type =
++ XInternAtom(xctx.dpy, "_NET_WM_WINDOW_TYPE", false);
++ Atom net_wm_window_type_notification =
++ XInternAtom(xctx.dpy, "_NET_WM_WINDOW_TYPE_NOTIFICATION", false);
++ Atom net_wm_window_type_utility =
++ XInternAtom(xctx.dpy, "_NET_WM_WINDOW_TYPE_UTILITY", false);
++
++ data[0] = net_wm_window_type_notification;
++ data[1] = net_wm_window_type_utility;
++
++ XChangeProperty(xctx.dpy, win, net_wm_window_type, XA_ATOM, 32,
++ PropModeReplace, (unsigned char *) &data, 1L);
+ }
+
+ /*
+@@ -884,6 +905,8 @@ static void x_win_setup(void)
+ CopyFromParent, DefaultVisual(xctx.dpy,
+ DefaultScreen(xctx.dpy)),
+ CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
++
++ x_set_win_type(xctx.win);
+ settings.transparency =
+ settings.transparency > 100 ? 100 : settings.transparency;
+ setopacity(xctx.win,
+--
+1.8.4
+