diff options
Diffstat (limited to 'community/pidgin-libnotify')
-rw-r--r-- | community/pidgin-libnotify/PKGBUILD | 15 | ||||
-rw-r--r-- | community/pidgin-libnotify/pidgin-libnotify-getfocus.patch | 69 |
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); + } |