summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorConnor Behan2015-06-08 19:01:13 -0400
committerConnor Behan2015-06-08 19:01:13 -0400
commitfa395fecb75fbba2c76dc02a9ee4f5f95ff7b402 (patch)
treed0033c9907c86a818fd7b9c85e2bf3bd49ceaa3e
downloadaur-fa395fecb75fbba2c76dc02a9ee4f5f95ff7b402.tar.gz
Initial import
-rw-r--r--.SRCINFO28
-rw-r--r--PKGBUILD37
-rw-r--r--WindowActionMenu-unset-window-and-stop-async-events-on-dispose.patch104
-rw-r--r--sticky.patch11
4 files changed, 180 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..f6bc28822c84
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,28 @@
+pkgbase = libwnck-sticky
+ pkgdesc = WNCK that shows sticky windows properly in the pager
+ pkgver = 2.31.0
+ pkgrel = 1
+ url = http://www.gnome.org/
+ arch = i686
+ arch = x86_64
+ license = LGPL
+ makedepends = pkg-config
+ makedepends = libxt>=1.0.6
+ makedepends = intltool
+ makedepends = gobject-introspection
+ makedepends = python2
+ depends = gtk2>=2.19.7
+ depends = startup-notification>=0.10
+ depends = libxres
+ provides = libwnck=2.31.0
+ replaces = libwnck
+ options = !libtool
+ source = http://ftp.gnome.org/pub/gnome/sources/libwnck/2.31/libwnck-2.31.0.tar.xz
+ source = WindowActionMenu-unset-window-and-stop-async-events-on-dispose.patch
+ source = sticky.patch
+ md5sums = f03e1139296e2a3a92e3b65a3080cd32
+ md5sums = ac358ae8106a71fd267e0bbb6b12b05b
+ md5sums = 50af9a71f68dd5ade109a30ecbe06c3f
+
+pkgname = libwnck-sticky
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..58e92cc77c53
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,37 @@
+# Contributor: Connor Behan <connor.behan@gmail.com>
+pkgname=libwnck-sticky
+pkgver=2.31.0
+pkgrel=1
+pkgdesc="WNCK that shows sticky windows properly in the pager"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gtk2>=2.19.7' 'startup-notification>=0.10' 'libxres')
+makedepends=('pkg-config' 'libxt>=1.0.6' 'intltool' 'gobject-introspection' 'python2')
+replaces=("libwnck")
+provides=("libwnck=$pkgver")
+options=('!libtool')
+url="http://www.gnome.org/"
+source=(http://ftp.gnome.org/pub/gnome/sources/libwnck/2.31/libwnck-${pkgver}.tar.xz WindowActionMenu-unset-window-and-stop-async-events-on-dispose.patch sticky.patch)
+
+build() {
+ cd "${srcdir}/libwnck-${pkgver}"
+ patch -Np1 -i "${srcdir}"/sticky.patch
+ patch -Np1 -i "${srcdir}"/WindowActionMenu-unset-window-and-stop-async-events-on-dispose.patch
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/libwnck-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ # These binaries are shipped in libwnck3
+ rm -f "${pkgdir}/usr/bin/wnckprop"
+ rm -f "${pkgdir}/usr/bin/wnck-urgency-monitor"
+ rmdir "${pkgdir}/usr/bin"
+}
+
+md5sums=('f03e1139296e2a3a92e3b65a3080cd32'
+ 'ac358ae8106a71fd267e0bbb6b12b05b'
+ '50af9a71f68dd5ade109a30ecbe06c3f')
diff --git a/WindowActionMenu-unset-window-and-stop-async-events-on-dispose.patch b/WindowActionMenu-unset-window-and-stop-async-events-on-dispose.patch
new file mode 100644
index 000000000000..f7db9aea52ac
--- /dev/null
+++ b/WindowActionMenu-unset-window-and-stop-async-events-on-dispose.patch
@@ -0,0 +1,104 @@
+From 9e17ab5b4345d90aa5e01a2379ae0ce29c3a3cf3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
+Date: Fri, 27 Sep 2013 19:32:51 +0200
+Subject: WindowActionMenu: unset window and stop async events on dispose
+
+Finalize function can be never called here, so it's better to do this
+when the widget gets destroyed.
+
+diff --git a/libwnck/window-action-menu.c b/libwnck/window-action-menu.c
+index e687cff..1e4b27e 100644
+--- a/libwnck/window-action-menu.c
++++ b/libwnck/window-action-menu.c
+@@ -104,10 +104,8 @@ enum {
+ G_DEFINE_TYPE (WnckActionMenu, wnck_action_menu, GTK_TYPE_MENU);
+ #define WNCK_ACTION_MENU_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), WNCK_TYPE_ACTION_MENU, WnckActionMenuPrivate))
+
+-static void wnck_action_menu_finalize (GObject *object);
++static void wnck_action_menu_dispose (GObject *object);
+
+-static void object_weak_notify (gpointer data,
+- GObject *obj);
+ static void window_weak_notify (gpointer data,
+ GObject *window);
+
+@@ -118,23 +116,10 @@ static void
+ window_weak_notify (gpointer data,
+ GObject *window)
+ {
+- g_object_weak_unref (G_OBJECT (data),
+- object_weak_notify,
+- window);
+-
++ WNCK_ACTION_MENU(data)->priv->window = NULL;
+ gtk_widget_destroy (GTK_WIDGET (data));
+ }
+
+-
+-static void
+-object_weak_notify (gpointer data,
+- GObject *obj)
+-{
+- g_object_weak_unref (G_OBJECT (data),
+- window_weak_notify,
+- obj);
+-}
+-
+ static WnckActionMenu*
+ get_action_menu (GtkWidget *widget)
+ {
+@@ -1030,7 +1015,6 @@ wnck_action_menu_constructor (GType type,
+ }
+
+ g_object_weak_ref (G_OBJECT (priv->window), window_weak_notify, menu);
+- g_object_weak_ref (G_OBJECT (menu), object_weak_notify, priv->window);
+
+ priv->minimize_item = make_menu_item (MINIMIZE);
+
+@@ -1181,7 +1165,7 @@ wnck_action_menu_class_init (WnckActionMenuClass *klass)
+ object_class->constructor = wnck_action_menu_constructor;
+ object_class->get_property = wnck_action_menu_get_property;
+ object_class->set_property = wnck_action_menu_set_property;
+- object_class->finalize = wnck_action_menu_finalize;
++ object_class->dispose = wnck_action_menu_dispose;
+
+ g_object_class_install_property (object_class,
+ PROP_WINDOW,
+@@ -1192,17 +1176,30 @@ wnck_action_menu_class_init (WnckActionMenuClass *klass)
+ }
+
+ static void
+-wnck_action_menu_finalize (GObject *object)
++wnck_action_menu_dispose (GObject *object)
+ {
+ WnckActionMenu *menu;
+
+ menu = WNCK_ACTION_MENU (object);
+
+ if (menu->priv->idle_handler)
+- g_source_remove (menu->priv->idle_handler);
+- menu->priv->idle_handler = 0;
++ {
++ g_source_remove (menu->priv->idle_handler);
++ menu->priv->idle_handler = 0;
++ }
++
++ if (WNCK_IS_WINDOW (menu->priv->window))
++ {
++ g_object_weak_unref (G_OBJECT (menu->priv->window), window_weak_notify, menu);
++ g_signal_handlers_disconnect_by_data (menu->priv->window, menu);
++
++ WnckScreen *screen = wnck_window_get_screen (menu->priv->window);
++ g_signal_handlers_disconnect_by_data (screen, menu);
++
++ menu->priv->window = NULL;
++ }
+
+- G_OBJECT_CLASS (wnck_action_menu_parent_class)->finalize (object);
++ G_OBJECT_CLASS (wnck_action_menu_parent_class)->dispose (object);
+ }
+
+ /**
+--
+cgit v0.10.2
+
diff --git a/sticky.patch b/sticky.patch
new file mode 100644
index 000000000000..04338445c876
--- /dev/null
+++ b/sticky.patch
@@ -0,0 +1,11 @@
+--- libwnck-2.28.0/libwnck/pager.c.orig 2009-12-28 22:57:40.000000000 -0500
++++ libwnck-2.28.0/libwnck/pager.c 2009-12-28 22:57:42.000000000 -0500
+@@ -722,7 +722,7 @@
+ for (tmp = windows; tmp != NULL; tmp = tmp->next)
+ {
+ WnckWindow *win = WNCK_WINDOW (tmp->data);
+- if (wnck_pager_window_get_workspace (win, TRUE) == workspace_num)
++ if ((wnck_pager_window_get_workspace (win, TRUE) == workspace_num) || ((wnck_pager_window_get_workspace (win, TRUE) >= 0) && (wnck_window_is_pinned(win))))
+ result = g_list_prepend (result, win);
+ }
+