diff options
author | Connor Behan | 2015-06-08 19:01:13 -0400 |
---|---|---|
committer | Connor Behan | 2015-06-08 19:01:13 -0400 |
commit | fa395fecb75fbba2c76dc02a9ee4f5f95ff7b402 (patch) | |
tree | d0033c9907c86a818fd7b9c85e2bf3bd49ceaa3e | |
download | aur-fa395fecb75fbba2c76dc02a9ee4f5f95ff7b402.tar.gz |
Initial import
-rw-r--r-- | .SRCINFO | 28 | ||||
-rw-r--r-- | PKGBUILD | 37 | ||||
-rw-r--r-- | WindowActionMenu-unset-window-and-stop-async-events-on-dispose.patch | 104 | ||||
-rw-r--r-- | sticky.patch | 11 |
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); + } + |