void-packages/srcpkgs/pidgin-libnotify/patches/pidgin-libnotify-getfocus.patch
Đoàn Trần Công Danh 49cb564d14 srcpkgs/p*: convert patches to -Np1
* par is kept at -Np0

```sh
git grep -l '^patch_args=-Np0' "srcpkgs/$1*/template" |
while read template; do
	for p in ${template%/template}/patches/*; do
		sed -i '
			\,^[+-][+-][+-] /dev/null,b
			/^[*-]\+ [0-9]\+\(,[0-9]\+\)\? [*-]\+$/b
			s,^[*][*][*] ,&a/,
			/^--- /{
				s,\(^--- \)\(./\)*,\1a/,
				s,[.-][Oo][Rr][Ii][Gg]\([	/]\),\1,
				s/[.-][Oo][Rr][Ii][Gg]$//
				s/[.]patched[.]\([^.]\)/.\1/
				h
			}
			/^+++ -/{
				g
				s/^--- a/+++ b/
				b
			}
			s,\(^+++ \)\(./\)*,\1b/,
		' "$p"
	done
	sed -i '/^patch_args=/d' $template
done
```
2021-06-20 13:17:29 +07:00

69 lines
2 KiB
Diff

--- a/src/pidgin-libnotify.c 2013-05-07 17:38:31.397261982 +0200
+++ b/src2/pidgin-libnotify.c 2013-05-07 17:43:43.787904584 +0200
@@ -169,6 +169,49 @@ pixbuf_from_buddy_icon (PurpleBuddyIcon
return icon;
}
+/* Taken from pidgin-hotkeys to get focus on conversation window */
+static void
+hacky_active_window(GtkWidget *window)
+{
+ GdkScreen *screen;
+ GdkWindow *root;
+ GdkDisplay *display;
+ Display *xdisplay;
+ Window xroot;
+ XEvent xev;
+ static Atom _net_active_window = None;
+
+ screen = gtk_widget_get_screen(window);
+ root = gdk_screen_get_root_window(screen);
+ display = gdk_screen_get_display(screen);
+
+ xdisplay = GDK_DISPLAY_XDISPLAY(display);
+ xroot = GDK_WINDOW_XWINDOW(root);
+
+ if (_net_active_window == None)
+ _net_active_window = XInternAtom(xdisplay,
+ "_NET_ACTIVE_WINDOW",
+ False);
+
+ xev.xclient.type = ClientMessage;
+ xev.xclient.serial = 0;
+ xev.xclient.send_event = True;
+ xev.xclient.window = GDK_WINDOW_XWINDOW(window->window);
+ xev.xclient.message_type = _net_active_window;
+ xev.xclient.format = 32;
+ xev.xclient.data.l[0] = 1; /* requestor type; we're an app, I guess */
+ xev.xclient.data.l[1] = CurrentTime;
+ xev.xclient.data.l[2] = None; /* "currently active window", supposedly */
+ xev.xclient.data.l[3] = 0;
+ xev.xclient.data.l[4] = 0;
+
+ XSendEvent(xdisplay,
+ xroot, False,
+ SubstructureRedirectMask | SubstructureNotifyMask,
+ &xev);
+}
+
+
static void
action_cb (NotifyNotification *notification,
gchar *action, gpointer user_data)
@@ -194,6 +237,16 @@ action_cb (NotifyNotification *notificat
buddy->name);
}
conv->ui_ops->present (conv);
+
+ /* get the focus on the new conversation window */
+ {
+ GtkWindow *gtkwindow;
+
+ gtkwindow = GTK_WINDOW(pidgin_conv_get_window(PIDGIN_CONVERSATION(conv))->window);
+ /*gtk_window_present(gtkwindow);*/
+ hacky_active_window(GTK_WIDGET(gtkwindow));
+ }
+
notify_notification_close (notification, NULL);
}