summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacho Ramos <pacho@gentoo.org>2011-02-08 10:24:00 +0000
committerPacho Ramos <pacho@gentoo.org>2011-02-08 10:24:00 +0000
commit65f9ff3fa88d9a2aa087588ebd25ee50e2890e18 (patch)
tree9423f244a02da110bd7f609a286e1bf9b3c40ab4 /gnome-base/gnome-panel
parentVersion bump, remove old. (diff)
downloadgentoo-2-65f9ff3fa88d9a2aa087588ebd25ee50e2890e18.tar.gz
gentoo-2-65f9ff3fa88d9a2aa087588ebd25ee50e2890e18.tar.bz2
gentoo-2-65f9ff3fa88d9a2aa087588ebd25ee50e2890e18.zip
Apply upstream patch to fix build with as-needed and try to improve panel behavior on multiscreen systems, bug #348253, upstream #632369 (patches by Vuntz).
(Portage version: 2.1.9.36/cvs/Linux x86_64)
Diffstat (limited to 'gnome-base/gnome-panel')
-rw-r--r--gnome-base/gnome-panel/ChangeLog12
-rw-r--r--gnome-base/gnome-panel/files/gnome-panel-2.32.1-as-needed.patch35
-rw-r--r--gnome-base/gnome-panel/files/gnome-panel-2.32.1-fix-multiscreen.patch161
-rw-r--r--gnome-base/gnome-panel/files/gnome-panel-2.32.1-fix-multiscreen2.patch40
-rw-r--r--gnome-base/gnome-panel/gnome-panel-2.32.1-r1.ebuild100
5 files changed, 347 insertions, 1 deletions
diff --git a/gnome-base/gnome-panel/ChangeLog b/gnome-base/gnome-panel/ChangeLog
index bc63934f01bf..cc4355973bfb 100644
--- a/gnome-base/gnome-panel/ChangeLog
+++ b/gnome-base/gnome-panel/ChangeLog
@@ -1,6 +1,16 @@
# ChangeLog for gnome-base/gnome-panel
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-panel/ChangeLog,v 1.322 2011/02/04 11:03:45 pacho Exp $
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-panel/ChangeLog,v 1.323 2011/02/08 10:24:00 pacho Exp $
+
+*gnome-panel-2.32.1-r1 (08 Feb 2011)
+
+ 08 Feb 2011; Pacho Ramos <pacho@gentoo.org> +gnome-panel-2.32.1-r1.ebuild,
+ +files/gnome-panel-2.32.1-as-needed.patch,
+ +files/gnome-panel-2.32.1-fix-multiscreen.patch,
+ +files/gnome-panel-2.32.1-fix-multiscreen2.patch:
+ Apply upstream patch to fix build with as-needed and try to improve panel
+ behavior on multiscreen systems, bug #348253, upstream #632369 (patches by
+ Vuntz).
04 Feb 2011; Pacho Ramos <pacho@gentoo.org> gnome-panel-2.32.1.ebuild:
Drop eggdbus dependency as looks to be not really needed as told by upstream
diff --git a/gnome-base/gnome-panel/files/gnome-panel-2.32.1-as-needed.patch b/gnome-base/gnome-panel/files/gnome-panel-2.32.1-as-needed.patch
new file mode 100644
index 000000000000..989fc8bdc8e0
--- /dev/null
+++ b/gnome-base/gnome-panel/files/gnome-panel-2.32.1-as-needed.patch
@@ -0,0 +1,35 @@
+From 76dc5a00044de3076fe7117ff9944e4c5660e5ba Mon Sep 17 00:00:00 2001
+From: Sebastien Bacher <seb128@ubuntu.com>
+Date: Wed, 17 Nov 2010 17:41:17 +0000
+Subject: build: list the objects before the libraries to fix build with --as-needed
+
+---
+diff --git a/applets/notification_area/Makefile.am b/applets/notification_area/Makefile.am
+index c70ce9a..70d3937 100644
+--- a/applets/notification_area/Makefile.am
++++ b/applets/notification_area/Makefile.am
+@@ -29,17 +29,18 @@ libtray_la_SOURCES = \
+ NOTIFICATION_AREA_SOURCES = main.c
+
+ NOTIFICATION_AREA_LDADD = \
++ libtray.la \
+ ../../libpanel-applet/libpanel-applet-3.la \
+ $(X_LIBS) \
+ $(NOTIFICATION_AREA_LIBS) \
+- $(LIBPANEL_APPLET_LIBS) \
+- libtray.la
++ $(LIBPANEL_APPLET_LIBS)
+
+ testtray_SOURCES = testtray.c
+ testtray_LDADD = \
++ libtray.la \
+ $(X_LIBS) \
+- $(NOTIFICATION_AREA_LIBS) \
+- libtray.la
++ $(NOTIFICATION_AREA_LIBS)
++
+
+ if NOTIFICATION_AREA_INPROCESS
+ APPLET_IN_PROCESS = true
+--
+cgit v0.8.3.1
diff --git a/gnome-base/gnome-panel/files/gnome-panel-2.32.1-fix-multiscreen.patch b/gnome-base/gnome-panel/files/gnome-panel-2.32.1-fix-multiscreen.patch
new file mode 100644
index 000000000000..3ef70fb0d384
--- /dev/null
+++ b/gnome-base/gnome-panel/files/gnome-panel-2.32.1-fix-multiscreen.patch
@@ -0,0 +1,161 @@
+From 6812c83154f4e482d32745c9177b5b220ed3bfc7 Mon Sep 17 00:00:00 2001
+From: Vincent Untz <vuntz@gnome.org>
+Date: Tue, 1 Feb 2011 13:55:34 +0100
+Subject: [PATCH] panel: Fix dbus applets to work in multiscreen environment
+
+When the applet is created, the frame itself is not yet added to a
+widget hierarchy, and is therefore not associated with any screen. So we
+always sent the default screen as the one to be used to the applet.
+
+We can simply use the screen of the PanelWidget that will contain the
+applet instead.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=632369
+---
+ .../panel-applet-container.c | 12 ++++++++----
+ .../panel-applet-container.h | 1 +
+ .../panel-applet-frame-dbus.c | 4 +++-
+ gnome-panel/panel-applet-frame.c | 6 ++++++
+ gnome-panel/panel-applet-frame.h | 1 +
+ gnome-panel/panel-test-applets.c | 1 +
+ 6 files changed, 20 insertions(+), 5 deletions(-)
+
+diff --git a/gnome-panel/libpanel-applet-private/panel-applet-container.c b/gnome-panel/libpanel-applet-private/panel-applet-container.c
+index 886e7f2..fd51208 100644
+--- a/gnome-panel/libpanel-applet-private/panel-applet-container.c
++++ b/gnome-panel/libpanel-applet-private/panel-applet-container.c
+@@ -447,6 +447,7 @@ on_factory_appeared (GDBusConnection *connection,
+
+ static void
+ panel_applet_container_get_applet (PanelAppletContainer *container,
++ GdkScreen *screen,
+ const gchar *iid,
+ GVariant *props,
+ GCancellable *cancellable,
+@@ -455,7 +456,7 @@ panel_applet_container_get_applet (PanelAppletContainer *container,
+ {
+ GSimpleAsyncResult *result;
+ AppletFactoryData *data;
+- gint screen;
++ gint screen_number;
+ gchar *bus_name;
+ gchar *factory_id;
+ gchar *applet_id;
+@@ -480,12 +481,14 @@ panel_applet_container_get_applet (PanelAppletContainer *container,
+ factory_id = g_strndup (iid, strlen (iid) - strlen (applet_id));
+ applet_id += 2;
+
+- screen = gdk_screen_get_number (gtk_widget_get_screen (container->priv->socket));
++ /* we can't use the screen of the container widget since it's not in a
++ * widget hierarchy yet */
++ screen_number = gdk_screen_get_number (screen);
+
+ data = g_new (AppletFactoryData, 1);
+ data->result = result;
+ data->factory_id = factory_id;
+- data->parameters = g_variant_new ("(si*)", applet_id, screen, props);
++ data->parameters = g_variant_new ("(si*)", applet_id, screen_number, props);
+ data->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
+
+ bus_name = g_strdup_printf (PANEL_APPLET_BUS_NAME, factory_id);
+@@ -504,6 +507,7 @@ panel_applet_container_get_applet (PanelAppletContainer *container,
+
+ void
+ panel_applet_container_add (PanelAppletContainer *container,
++ GdkScreen *screen,
+ const gchar *iid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+@@ -515,7 +519,7 @@ panel_applet_container_add (PanelAppletContainer *container,
+
+ panel_applet_container_cancel_pending_operations (container);
+
+- panel_applet_container_get_applet (container, iid, properties,
++ panel_applet_container_get_applet (container, screen, iid, properties,
+ cancellable, callback, user_data);
+ }
+
+diff --git a/gnome-panel/libpanel-applet-private/panel-applet-container.h b/gnome-panel/libpanel-applet-private/panel-applet-container.h
+index 130bf16..e4de97a 100644
+--- a/gnome-panel/libpanel-applet-private/panel-applet-container.h
++++ b/gnome-panel/libpanel-applet-private/panel-applet-container.h
+@@ -73,6 +73,7 @@ GtkWidget *panel_applet_container_new (void);
+
+
+ void panel_applet_container_add (PanelAppletContainer *container,
++ GdkScreen *screen,
+ const gchar *iid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+diff --git a/gnome-panel/libpanel-applet-private/panel-applet-frame-dbus.c b/gnome-panel/libpanel-applet-private/panel-applet-frame-dbus.c
+index 9aaac15..dd3aecb 100644
+--- a/gnome-panel/libpanel-applet-private/panel-applet-frame-dbus.c
++++ b/gnome-panel/libpanel-applet-private/panel-applet-frame-dbus.c
+@@ -411,6 +411,7 @@ panel_applet_frame_dbus_load (const gchar *iid,
+ PanelAppletFrameDBus *dbus_frame;
+ PanelAppletFrame *frame;
+ GVariantBuilder builder;
++ GdkScreen *screen;
+ gchar *conf_path;
+ gchar *background;
+ guint orient;
+@@ -425,6 +426,7 @@ panel_applet_frame_dbus_load (const gchar *iid,
+ frame = PANEL_APPLET_FRAME (dbus_frame);
+ _panel_applet_frame_set_iid (frame, iid);
+
++ screen = panel_applet_frame_activating_get_screen (frame_act);
+ orient = get_panel_applet_orient (panel_applet_frame_activating_get_orientation (frame_act));
+ conf_path = panel_applet_frame_activating_get_conf_path (frame_act);
+ /* we can't really get a background string at this point since we don't
+@@ -456,7 +458,7 @@ panel_applet_frame_dbus_load (const gchar *iid,
+ g_object_set_data (G_OBJECT (frame), "panel-applet-frame-activating", frame_act);
+
+ panel_applet_container_add (dbus_frame->priv->container,
+- iid, NULL,
++ screen, iid, NULL,
+ (GAsyncReadyCallback) panel_applet_frame_dbus_activated,
+ frame,
+ g_variant_builder_end (&builder));
+diff --git a/gnome-panel/panel-applet-frame.c b/gnome-panel/panel-applet-frame.c
+index be65965..8fb803c 100644
+--- a/gnome-panel/panel-applet-frame.c
++++ b/gnome-panel/panel-applet-frame.c
+@@ -821,6 +821,12 @@ panel_applet_frame_activating_free (PanelAppletFrameActivating *frame_act)
+ g_slice_free (PanelAppletFrameActivating, frame_act);
+ }
+
++GdkScreen *
++panel_applet_frame_activating_get_screen (PanelAppletFrameActivating *frame_act)
++{
++ return gtk_widget_get_screen (frame_act->panel);
++}
++
+ PanelOrientation
+ panel_applet_frame_activating_get_orientation (PanelAppletFrameActivating *frame_act)
+ {
+diff --git a/gnome-panel/panel-applet-frame.h b/gnome-panel/panel-applet-frame.h
+index a459bb7..a551c4c 100644
+--- a/gnome-panel/panel-applet-frame.h
++++ b/gnome-panel/panel-applet-frame.h
+@@ -105,6 +105,7 @@ void panel_applet_frame_set_panel (PanelAppletFrame *frame,
+
+ typedef struct _PanelAppletFrameActivating PanelAppletFrameActivating;
+
++GdkScreen *panel_applet_frame_activating_get_screen (PanelAppletFrameActivating *frame_act);
+ PanelOrientation panel_applet_frame_activating_get_orientation (PanelAppletFrameActivating *frame_act);
+ guint32 panel_applet_frame_activating_get_size (PanelAppletFrameActivating *frame_act);
+ gboolean panel_applet_frame_activating_get_locked (PanelAppletFrameActivating *frame_act);
+diff --git a/gnome-panel/panel-test-applets.c b/gnome-panel/panel-test-applets.c
+index 58b1a3a..b302bc2 100644
+--- a/gnome-panel/panel-test-applets.c
++++ b/gnome-panel/panel-test-applets.c
+@@ -164,6 +164,7 @@ load_applet_into_window (const char *title,
+ g_variant_builder_add (&builder, "{sv}",
+ "orient", g_variant_new_uint32 (orientation));
+ panel_applet_container_add (PANEL_APPLET_CONTAINER (container),
++ gtk_widget_get_screen (applet_window),
+ title, NULL,
+ (GAsyncReadyCallback)applet_activated_cb,
+ applet_window,
+--
+1.7.3.4 \ No newline at end of file
diff --git a/gnome-base/gnome-panel/files/gnome-panel-2.32.1-fix-multiscreen2.patch b/gnome-base/gnome-panel/files/gnome-panel-2.32.1-fix-multiscreen2.patch
new file mode 100644
index 000000000000..166c55496312
--- /dev/null
+++ b/gnome-base/gnome-panel/files/gnome-panel-2.32.1-fix-multiscreen2.patch
@@ -0,0 +1,40 @@
+From 73d6cd1d1e43a9d45c6d477bce69baba6a921f05 Mon Sep 17 00:00:00 2001
+From: Vincent Untz <vuntz@gnome.org>
+Date: Tue, 1 Feb 2011 15:53:34 +0100
+Subject: [PATCH] libpanel-applet: Use right GdkScreen for focus request and menu
+
+Calling gtk_widget_get_screen() on a widget embedded in a plug doesn't
+necessarily return what you expect (because of
+gtk_widget_get_toplevel()).
+
+Instead, call gtk_window_get_screen() on the plug.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=632369
+---
+ libpanel-applet/panel-applet.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libpanel-applet/panel-applet.c b/libpanel-applet/panel-applet.c
+index eb4bed2..86215c2 100644
+--- a/libpanel-applet/panel-applet.c
++++ b/libpanel-applet/panel-applet.c
+@@ -703,7 +703,7 @@ panel_applet_request_focus (PanelApplet *applet,
+
+ g_return_if_fail (PANEL_IS_APPLET (applet));
+
+- screen = gtk_widget_get_screen (GTK_WIDGET (applet));
++ screen = gtk_window_get_screen (GTK_WINDOW (applet->priv->plug));
+ root = gdk_screen_get_root_window (screen);
+ display = gdk_screen_get_display (screen);
+
+@@ -957,7 +957,7 @@ panel_applet_position_menu (GtkMenu *menu,
+
+ applet = PANEL_APPLET (widget);
+
+- screen = gtk_widget_get_screen (widget);
++ screen = gtk_window_get_screen (GTK_WINDOW (applet->priv->plug));
+
+ gtk_widget_get_preferred_size (GTK_WIDGET (menu), &requisition, NULL);
+ gdk_window_get_origin (gtk_widget_get_window (widget),
+--
+1.7.3.4 \ No newline at end of file
diff --git a/gnome-base/gnome-panel/gnome-panel-2.32.1-r1.ebuild b/gnome-base/gnome-panel/gnome-panel-2.32.1-r1.ebuild
new file mode 100644
index 000000000000..40aee22ab1a8
--- /dev/null
+++ b/gnome-base/gnome-panel/gnome-panel-2.32.1-r1.ebuild
@@ -0,0 +1,100 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-panel/gnome-panel-2.32.1-r1.ebuild,v 1.1 2011/02/08 10:24:00 pacho Exp $
+
+EAPI="3"
+GCONF_DEBUG="no"
+PYTHON_DEPEND="2:2.4"
+
+inherit gnome2 python eutils autotools
+
+DESCRIPTION="The GNOME panel"
+HOMEPAGE="http://www.gnome.org/"
+
+LICENSE="GPL-2 FDL-1.1 LGPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~x86-solaris"
+IUSE="+bonobo doc eds +introspection networkmanager"
+
+RDEPEND=">=gnome-base/gnome-desktop-2.26:2
+ >=x11-libs/pango-1.15.4[introspection?]
+ >=dev-libs/glib-2.25.12:2
+ >=x11-libs/gtk+-2.22:2[introspection?]
+ >=dev-libs/libgweather-2.27.90:2
+ dev-libs/libxml2
+ >=gnome-base/gconf-2.6.1[introspection?]
+ >=media-libs/libcanberra-0.23[gtk]
+ >=gnome-base/gnome-menus-2.27.92
+ gnome-base/librsvg
+ >=dev-libs/dbus-glib-0.80
+ >=sys-apps/dbus-1.1.2
+ >=x11-libs/cairo-1
+ x11-libs/libXau
+ >=x11-libs/libXrandr-1.2
+ bonobo? (
+ >=gnome-base/libbonobo-2.20.4
+ >=gnome-base/libbonoboui-2.1.1
+ >=gnome-base/orbit-2.4
+ >=x11-libs/libwnck-2.19.5 )
+ eds? ( >=gnome-extra/evolution-data-server-1.6 )
+ introspection? ( >=dev-libs/gobject-introspection-0.6.7 )
+ networkmanager? ( >=net-misc/networkmanager-0.6.7 )"
+DEPEND="${RDEPEND}
+ >=dev-lang/perl-5
+ >=app-text/gnome-doc-utils-0.3.2
+ >=dev-util/pkgconfig-0.9
+ >=dev-util/intltool-0.40
+ ~app-text/docbook-xml-dtd-4.1.2
+ doc? ( >=dev-util/gtk-doc-1 )
+ gnome-base/gnome-common
+ dev-util/gtk-doc-am"
+# eautoreconf needs
+# gnome-base/gnome-common
+# dev-util/gtk-doc-am
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ --disable-deprecation-flags
+ --disable-static
+ --disable-scrollkeeper
+ --disable-schemas-install
+ --with-in-process-applets=clock,notification-area,wncklet
+ $(use_enable bonobo)
+ $(use_enable networkmanager network-manager)
+ $(use_enable introspection)
+ $(use_enable eds)"
+ DOCS="AUTHORS ChangeLog HACKING NEWS README"
+ python_set_active_version 2
+}
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # List the objects before the libraries to fix build with --as-needed
+ epatch "${FILESDIR}/${P}-as-needed.patch"
+
+ # Try to improve panel behavior on multiscreen systems, bug #348253, upstream #632369
+ epatch "${FILESDIR}/${PN}-2.32.1-fix-multiscreen.patch"
+ epatch "${FILESDIR}/${PN}-2.32.1-fix-multiscreen2.patch"
+
+ intltoolize --force --copy --automake || die "intltoolize failed"
+ eautoreconf
+}
+
+pkg_postinst() {
+ local entries="${EROOT}etc/gconf/schemas/panel-default-setup.entries"
+ local gconftool="${EROOT}usr/bin/gconftool-2"
+
+ if [ -e "$entries" ]; then
+ einfo "Setting panel gconf defaults..."
+
+ GCONF_CONFIG_SOURCE="$("${gconftool}" --get-default-source | sed "s;:/;:${ROOT};")"
+
+ "${gconftool}" --direct --config-source \
+ "${GCONF_CONFIG_SOURCE}" --load="${entries}"
+ fi
+
+ # Calling this late so it doesn't process the GConf schemas file we already
+ # took care of.
+ gnome2_pkg_postinst
+}