diff options
author | Pacho Ramos <pacho@gentoo.org> | 2011-02-08 10:24:00 +0000 |
---|---|---|
committer | Pacho Ramos <pacho@gentoo.org> | 2011-02-08 10:24:00 +0000 |
commit | 65f9ff3fa88d9a2aa087588ebd25ee50e2890e18 (patch) | |
tree | 9423f244a02da110bd7f609a286e1bf9b3c40ab4 /gnome-base/gnome-panel | |
parent | Version bump, remove old. (diff) | |
download | gentoo-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')
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 +} |