summaryrefslogtreecommitdiff
path: root/community/pidgin-libnotify
diff options
context:
space:
mode:
Diffstat (limited to 'community/pidgin-libnotify')
-rw-r--r--community/pidgin-libnotify/PKGBUILD15
-rw-r--r--community/pidgin-libnotify/pidgin-libnotify-getfocus.patch69
2 files changed, 78 insertions, 6 deletions
diff --git a/community/pidgin-libnotify/PKGBUILD b/community/pidgin-libnotify/PKGBUILD
index 8041fd6fe..884b9e373 100644
--- a/community/pidgin-libnotify/PKGBUILD
+++ b/community/pidgin-libnotify/PKGBUILD
@@ -4,7 +4,7 @@
pkgname=pidgin-libnotify
pkgver=0.14
-pkgrel=7
+pkgrel=8
arch=('i686' 'x86_64' 'mips64el')
pkgdesc="pidgin plugin that enables popups when someone logs in or messages you."
url="http://gaim-libnotify.sourceforge.net/"
@@ -14,22 +14,25 @@ makedepends=('intltool')
optdepends=('notification-daemon')
options=(!libtool)
source=(http://downloads.sourceforge.net/sourceforge/gaim-libnotify/$pkgname-$pkgver.tar.gz language_fixes.patch
- pidgin-libnotify-0.14-libnotify-0.7.patch pidgin-libnotify-showbutton.patch)
+ pidgin-libnotify-0.14-libnotify-0.7.patch pidgin-libnotify-showbutton.patch pidgin-libnotify-getfocus.patch)
+md5sums=('bfb5368b69c02d429b2b17c00a6673c0'
+ 'e9bdbb3c7faa61f062fc64277457b6c0'
+ '05538625f14d9f2c12adae5fa6a1fa26'
+ 'efe1e86aa1e0bc9f7d20efe7f34ad4a7'
+ 'e624998744d1c2fb8e2c6be94b04c38a')
build() {
cd "$srcdir/$pkgname-$pkgver"
patch -Np1 -i "$srcdir/language_fixes.patch"
patch -Np0 -i "$srcdir/pidgin-libnotify-0.14-libnotify-0.7.patch"
patch -Np0 -i "$srcdir/pidgin-libnotify-showbutton.patch"
+ patch -Np0 -i "$srcdir/pidgin-libnotify-getfocus.patch"
./configure --prefix=/usr --disable-deprecated --disable-static
make
}
+
package() {
cd "$srcdir/$pkgname-$pkgver"
make DESTDIR="$pkgdir" install
}
-md5sums=('bfb5368b69c02d429b2b17c00a6673c0'
- 'e9bdbb3c7faa61f062fc64277457b6c0'
- '05538625f14d9f2c12adae5fa6a1fa26'
- 'efe1e86aa1e0bc9f7d20efe7f34ad4a7')
diff --git a/community/pidgin-libnotify/pidgin-libnotify-getfocus.patch b/community/pidgin-libnotify/pidgin-libnotify-getfocus.patch
new file mode 100644
index 000000000..db45829d9
--- /dev/null
+++ b/community/pidgin-libnotify/pidgin-libnotify-getfocus.patch
@@ -0,0 +1,69 @@
+--- src/pidgin-libnotify.c 2013-05-07 17:38:31.397261982 +0200
++++ 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);
+ }