From b679c3039bd2611acfd598b4d4cb75151ce22084 Mon Sep 17 00:00:00 2001 From: Pacho Ramos Date: Fri, 23 Aug 2013 09:27:52 +0000 Subject: Multiple fixes from upstream: reversion of a commit causing multiple hangs (#481918), reset opacity when not animating, unconditionally allocate scrollbars, don't allow events through the lock dialog, filter out hidden applications. This also changes default apps in favorites (#479918). Drop old. (Portage version: 2.1.13.7/cvs/Linux x86_64, signed Manifest commit with key A188FBD4) --- gnome-base/gnome-shell/ChangeLog | 17 +- .../gnome-shell-3.8.4-allocate-scrollbars.patch | 94 ++++++++ .../files/gnome-shell-3.8.4-events-lock.patch | 28 +++ .../files/gnome-shell-3.8.4-nodisplay.patch | 27 +++ .../files/gnome-shell-3.8.4-reset-opacity.patch | 22 ++ .../files/gnome-shell-3.8.4-revert-async.patch | 123 +++++++++++ .../gnome-shell/files/gnome-shell-defaults.patch | 11 + gnome-base/gnome-shell/gnome-shell-3.8.3-r2.ebuild | 223 ------------------- gnome-base/gnome-shell/gnome-shell-3.8.4-r1.ebuild | 236 +++++++++++++++++++++ 9 files changed, 557 insertions(+), 224 deletions(-) create mode 100644 gnome-base/gnome-shell/files/gnome-shell-3.8.4-allocate-scrollbars.patch create mode 100644 gnome-base/gnome-shell/files/gnome-shell-3.8.4-events-lock.patch create mode 100644 gnome-base/gnome-shell/files/gnome-shell-3.8.4-nodisplay.patch create mode 100644 gnome-base/gnome-shell/files/gnome-shell-3.8.4-reset-opacity.patch create mode 100644 gnome-base/gnome-shell/files/gnome-shell-3.8.4-revert-async.patch create mode 100644 gnome-base/gnome-shell/files/gnome-shell-defaults.patch delete mode 100644 gnome-base/gnome-shell/gnome-shell-3.8.3-r2.ebuild create mode 100644 gnome-base/gnome-shell/gnome-shell-3.8.4-r1.ebuild (limited to 'gnome-base/gnome-shell') diff --git a/gnome-base/gnome-shell/ChangeLog b/gnome-base/gnome-shell/ChangeLog index 0e2e91083281..e0d29edc03f8 100644 --- a/gnome-base/gnome-shell/ChangeLog +++ b/gnome-base/gnome-shell/ChangeLog @@ -1,6 +1,21 @@ # ChangeLog for gnome-base/gnome-shell # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-shell/ChangeLog,v 1.44 2013/07/31 03:35:45 tetromino Exp $ +# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-shell/ChangeLog,v 1.45 2013/08/23 09:27:51 pacho Exp $ + +*gnome-shell-3.8.4-r1 (23 Aug 2013) + + 23 Aug 2013; Pacho Ramos + +files/gnome-shell-3.8.4-allocate-scrollbars.patch, + +files/gnome-shell-3.8.4-events-lock.patch, + +files/gnome-shell-3.8.4-nodisplay.patch, + +files/gnome-shell-3.8.4-reset-opacity.patch, + +files/gnome-shell-3.8.4-revert-async.patch, + +files/gnome-shell-defaults.patch, +gnome-shell-3.8.4-r1.ebuild, + -gnome-shell-3.8.3-r2.ebuild: + Multiple fixes from upstream: reversion of a commit causing multiple hangs + (#481918), reset opacity when not animating, unconditionally allocate + scrollbars, don't allow events through the lock dialog, filter out hidden + applications. This also changes default apps in favorites (#479918). Drop old. *gnome-shell-3.8.4 (31 Jul 2013) diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.8.4-allocate-scrollbars.patch b/gnome-base/gnome-shell/files/gnome-shell-3.8.4-allocate-scrollbars.patch new file mode 100644 index 000000000000..861e7300ef1e --- /dev/null +++ b/gnome-base/gnome-shell/files/gnome-shell-3.8.4-allocate-scrollbars.patch @@ -0,0 +1,94 @@ +From 52417a8363cdb5b57af744cd4ca311c7f068403e Mon Sep 17 00:00:00 2001 +From: Adel Gadllah +Date: Sat, 10 Aug 2013 20:09:33 +0000 +Subject: st-scroll-view: Unconditionally allocate scrollbars + +Commit cfecd063c9ca3d18cd changed the allocation logic to not allocate +scrollbars when the *_visible booleans are false. This breaks the +fade effect as well as the NEVER policy. We do not paint scrollbars +when they are not supposed to be visible, so not allocating them +and thus leaving them in a "needs allocation" state just causes problems. + +I am not convinced that it solved any problem to begin with (we don't paint +them anyway). + +As the previous condition has basically always been true, just do it +unconditionally. + +https://bugzilla.gnome.org/show_bug.cgi?id=705664 +--- +diff --git a/src/st/st-scroll-view.c b/src/st/st-scroll-view.c +index 04e263f..f59ae93 100644 +--- a/src/st/st-scroll-view.c ++++ b/src/st/st-scroll-view.c +@@ -598,42 +598,36 @@ st_scroll_view_allocate (ClutterActor *actor, + */ + + /* Vertical scrollbar */ +- if (vscrollbar_visible) +- { +- if (clutter_actor_get_text_direction (actor) == CLUTTER_TEXT_DIRECTION_RTL) +- { +- child_box.x1 = content_box.x1; +- child_box.x2 = content_box.x1 + sb_width; +- } +- else +- { +- child_box.x1 = content_box.x2 - sb_width; +- child_box.x2 = content_box.x2; +- } +- child_box.y1 = content_box.y1; +- child_box.y2 = content_box.y2 - (hscrollbar_visible ? sb_height : 0); ++ if (clutter_actor_get_text_direction (actor) == CLUTTER_TEXT_DIRECTION_RTL) ++ { ++ child_box.x1 = content_box.x1; ++ child_box.x2 = content_box.x1 + sb_width; ++ } ++ else ++ { ++ child_box.x1 = content_box.x2 - sb_width; ++ child_box.x2 = content_box.x2; ++ } ++ child_box.y1 = content_box.y1; ++ child_box.y2 = content_box.y2 - (hscrollbar_visible ? sb_height : 0); + +- clutter_actor_allocate (priv->vscroll, &child_box, flags); +- } ++ clutter_actor_allocate (priv->vscroll, &child_box, flags); + + /* Horizontal scrollbar */ +- if (hscrollbar_visible) +- { +- if (clutter_actor_get_text_direction (actor) == CLUTTER_TEXT_DIRECTION_RTL) +- { +- child_box.x1 = content_box.x1 + (vscrollbar_visible ? sb_width : 0); +- child_box.x2 = content_box.x2; +- } +- else +- { +- child_box.x1 = content_box.x1; +- child_box.x2 = content_box.x2 - (vscrollbar_visible ? sb_width : 0); +- } +- child_box.y1 = content_box.y2 - sb_height; +- child_box.y2 = content_box.y2; ++ if (clutter_actor_get_text_direction (actor) == CLUTTER_TEXT_DIRECTION_RTL) ++ { ++ child_box.x1 = content_box.x1 + (vscrollbar_visible ? sb_width : 0); ++ child_box.x2 = content_box.x2; ++ } ++ else ++ { ++ child_box.x1 = content_box.x1; ++ child_box.x2 = content_box.x2 - (vscrollbar_visible ? sb_width : 0); ++ } ++ child_box.y1 = content_box.y2 - sb_height; ++ child_box.y2 = content_box.y2; + +- clutter_actor_allocate (priv->hscroll, &child_box, flags); +- } ++ clutter_actor_allocate (priv->hscroll, &child_box, flags); + + /* In case the scrollbar policy is NEVER or scrollbars should be + * overlayed, we don't trim the content box allocation by the +-- +cgit v0.9.2 diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.8.4-events-lock.patch b/gnome-base/gnome-shell/files/gnome-shell-3.8.4-events-lock.patch new file mode 100644 index 000000000000..0e0fc5bbcaf8 --- /dev/null +++ b/gnome-base/gnome-shell/files/gnome-shell-3.8.4-events-lock.patch @@ -0,0 +1,28 @@ +From d8177a8f3ba6cc6e80d27a7c6bdd1b5920e12544 Mon Sep 17 00:00:00 2001 +From: Giovanni Campagna +Date: Mon, 12 Aug 2013 13:14:37 +0000 +Subject: ScreenShield: don't allow events through the lock dialog + +Make the lock dialog group reactive, to intercept any events +before they go to the actors below. +In the future, we may restructure our chrome to have a clear +layer system, but for now it fixes a security issue in the lock +screen (you can see the contents of the windows by dragging +if the screen was locked with the overview active) + +https://bugzilla.gnome.org/show_bug.cgi?id=705840 +--- +diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js +index 4264f01..8452bc6 100644 +--- a/js/ui/screenShield.js ++++ b/js/ui/screenShield.js +@@ -478,6 +478,7 @@ const ScreenShield = new Lang.Class({ + + this._lockDialogGroup = new St.Widget({ x_expand: true, + y_expand: true, ++ reactive: true, + opacity: 0, + pivot_point: new Clutter.Point({ x: 0.5, y: 0.5 }), + name: 'lockDialogGroup' }); +-- +cgit v0.9.2 diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.8.4-nodisplay.patch b/gnome-base/gnome-shell/files/gnome-shell-3.8.4-nodisplay.patch new file mode 100644 index 000000000000..2c9b802fe736 --- /dev/null +++ b/gnome-base/gnome-shell/files/gnome-shell-3.8.4-nodisplay.patch @@ -0,0 +1,27 @@ +From 58872d162bd610578e048bf2832defc93a284a75 Mon Sep 17 00:00:00 2001 +From: Giovanni Campagna +Date: Sun, 31 Mar 2013 18:05:49 +0000 +Subject: AppDisplay/FrequentView: filter out hidden applications + +Filter out all applications which have the NoDisplay, Hidden or +Not/OnlyShowIn bits, as those are not meant to be launched directly. +This also allows the user to filter apps from the frequent view +using alacarte. + +https://bugzilla.gnome.org/show_bug.cgi?id=696949 +--- +diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js +index 22ae481..bcfb57a 100644 +--- a/js/ui/appDisplay.js ++++ b/js/ui/appDisplay.js +@@ -316,6 +316,8 @@ const FrequentView = new Lang.Class({ + loadApps: function() { + let mostUsed = this._usage.get_most_used (""); + for (let i = 0; i < mostUsed.length; i++) { ++ if (!mostUsed[i].get_app_info().should_show()) ++ continue; + let appIcon = new AppIcon(mostUsed[i]); + this._grid.addItem(appIcon.actor, -1); + } +-- +cgit v0.9.2 diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.8.4-reset-opacity.patch b/gnome-base/gnome-shell/files/gnome-shell-3.8.4-reset-opacity.patch new file mode 100644 index 000000000000..7a01178a9e5e --- /dev/null +++ b/gnome-base/gnome-shell/files/gnome-shell-3.8.4-reset-opacity.patch @@ -0,0 +1,22 @@ +From a6f39a12d7fef85c8ce40bc3898b17adf31bc2ba Mon Sep 17 00:00:00 2001 +From: Adel Gadllah +Date: Sun, 04 Aug 2013 09:35:35 +0000 +Subject: overview: Reset opacity when not animating + +We are not resetting the opacity when we are not animating, which can cause +a hidden window to end up with opacity 0 if we remove the tween to early. +--- +diff --git a/js/ui/workspace.js b/js/ui/workspace.js +index e2e461d..2c8ff22 100644 +--- a/js/ui/workspace.js ++++ b/js/ui/workspace.js +@@ -1094,6 +1094,7 @@ const Workspace = new Lang.Class({ + Tweener.removeTweens(clone.actor); + clone.actor.set_position(x, y); + clone.actor.set_scale(scale, scale); ++ clone.actor.set_opacity(255); + clone.overlay.relayout(false); + this._showWindowOverlay(clone, overlay, isOnCurrentWorkspace); + } +-- +cgit v0.9.2 diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.8.4-revert-async.patch b/gnome-base/gnome-shell/files/gnome-shell-3.8.4-revert-async.patch new file mode 100644 index 000000000000..bd34b16f121d --- /dev/null +++ b/gnome-base/gnome-shell/files/gnome-shell-3.8.4-revert-async.patch @@ -0,0 +1,123 @@ +From 0a1b9867fcf5065a72e782e05fea858883bf2cdc Mon Sep 17 00:00:00 2001 +From: Adel Gadllah +Date: Thu, 15 Aug 2013 19:51:46 +0000 +Subject: Revert "background: fix asynchronous management of background loading operations" + +This reverts commit 1020d8a0f8523a04d8336b1348388b8b242e414f. + +https://bugzilla.gnome.org/show_bug.cgi?id=704646 +--- +diff --git a/js/ui/background.js b/js/ui/background.js +index 13343c6..1d9ab7c 100644 +--- a/js/ui/background.js ++++ b/js/ui/background.js +@@ -142,40 +142,33 @@ const BackgroundCache = new Lang.Class({ + cancellable: null, + onFinished: null }); + +- let fileLoad = { filename: params.filename, +- style: params.style, +- shouldCopy: false, +- monitorIndex: params.monitorIndex, +- effects: params.effects, +- onFinished: params.onFinished, +- cancellable: new Gio.Cancellable(), }; +- this._pendingFileLoads.push(fileLoad); +- +- if (params.cancellable) { +- params.cancellable.connect(Lang.bind(this, function(c) { +- fileLoad.cancellable.cancel(); +- })); ++ for (let i = 0; i < this._pendingFileLoads.length; i++) { ++ if (this._pendingFileLoads[i].filename == params.filename && ++ this._pendingFileLoads[i].style == params.style) { ++ this._pendingFileLoads[i].callers.push({ shouldCopy: true, ++ monitorIndex: params.monitorIndex, ++ effects: params.effects, ++ onFinished: params.onFinished }); ++ return; ++ } + } + ++ this._pendingFileLoads.push({ filename: params.filename, ++ style: params.style, ++ callers: [{ shouldCopy: false, ++ monitorIndex: params.monitorIndex, ++ effects: params.effects, ++ onFinished: params.onFinished }] }); ++ + let content = new Meta.Background({ meta_screen: global.screen, + monitor: params.monitorIndex, + effects: params.effects }); + + content.load_file_async(params.filename, + params.style, +- fileLoad.cancellable, ++ params.cancellable, + Lang.bind(this, + function(object, result) { +- if (fileLoad.cancellable.is_cancelled()) { +- if (params.cancellable && params.cancellable.is_cancelled()) { +- if (params.onFinished) +- params.onFinished(null); +- this._removePendingFileLoad(fileLoad); +- return; +- } +- return; +- } +- + try { + content.load_file_finish(result); + +@@ -185,25 +178,22 @@ const BackgroundCache = new Lang.Class({ + content = null; + } + +- let needsCopy = false; + for (let i = 0; i < this._pendingFileLoads.length; i++) { + let pendingLoad = this._pendingFileLoads[i]; + if (pendingLoad.filename != params.filename || + pendingLoad.style != params.style) + continue; + +- if (pendingLoad.cancellable.is_cancelled()) +- continue; ++ for (let j = 0; j < pendingLoad.callers.length; j++) { ++ if (pendingLoad.callers[j].onFinished) { ++ if (content && pendingLoad.callers[j].shouldCopy) { ++ content = object.copy(pendingLoad.callers[j].monitorIndex, ++ pendingLoad.callers[j].effects); + +- pendingLoad.cancellable.cancel(); +- if (pendingLoad.onFinished) { +- if (content && needsCopy) { +- content = object.copy(pendingLoad.monitorIndex, +- pendingLoad.effects); +- } ++ } + +- needsCopy = true; +- pendingLoad.onFinished(content); ++ pendingLoad.callers[j].onFinished(content); ++ } + } + + this._pendingFileLoads.splice(i, 1); +@@ -211,15 +201,6 @@ const BackgroundCache = new Lang.Class({ + })); + }, + +- _removePendingFileLoad: function(fileLoad) { +- for (let i = 0; i < this._pendingFileLoads.length; i++) { +- if (this._pendingFileLoads[i].cancellable == fileLoad.cancellable) { +- this._pendingFileLoads.splice(i, 1); +- break; +- } +- } +- }, +- + getImageContent: function(params) { + params = Params.parse(params, { monitorIndex: 0, + style: null, +-- +cgit v0.9.2 diff --git a/gnome-base/gnome-shell/files/gnome-shell-defaults.patch b/gnome-base/gnome-shell/files/gnome-shell-defaults.patch new file mode 100644 index 000000000000..b88ca809599a --- /dev/null +++ b/gnome-base/gnome-shell/files/gnome-shell-defaults.patch @@ -0,0 +1,11 @@ +--- data/org.gnome.shell.gschema.xml.in.in~ 2013-07-30 22:57:44.000000000 +0200 ++++ data/org.gnome.shell.gschema.xml.in.in 2013-08-23 11:19:00.002182266 +0200 +@@ -32,7 +32,7 @@ + + + +- [ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ] ++ [ 'chromium-browser-chromium.desktop', 'firefox.desktop', 'firefox-bin.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ] + <_summary>List of desktop file IDs for favorite applications + <_description> + The applications corresponding to these identifiers diff --git a/gnome-base/gnome-shell/gnome-shell-3.8.3-r2.ebuild b/gnome-base/gnome-shell/gnome-shell-3.8.3-r2.ebuild deleted file mode 100644 index 481a44e64242..000000000000 --- a/gnome-base/gnome-shell/gnome-shell-3.8.3-r2.ebuild +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright 1999-2013 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-shell/gnome-shell-3.8.3-r2.ebuild,v 1.5 2013/07/29 20:24:45 pacho Exp $ - -EAPI="5" -GCONF_DEBUG="no" -GNOME2_LA_PUNT="yes" -PYTHON_COMPAT=( python2_{6,7} ) - -inherit autotools eutils gnome2 multilib pax-utils python-r1 systemd - -DESCRIPTION="Provides core UI functions for the GNOME 3 desktop" -HOMEPAGE="http://live.gnome.org/GnomeShell" - -SRC_URI="${SRC_URI} http://dev.gentoo.org/~pacho/gnome/${P}-patches.tar.xz" - -LICENSE="GPL-2+ LGPL-2+" -SLOT="0" -IUSE="+bluetooth +i18n +networkmanager" -KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86" - -# libXfixes-5.0 needed for pointer barriers -# TODO: gstreamer support is currently automagical: -# gstreamer? ( >=media-libs/gstreamer-0.11.92 ) -# -# gnome-shell/gnome-control-center/mutter/gnome-settings-daemon better to be in sync for 3.8.3 -# https://mail.gnome.org/archives/gnome-announce-list/2013-June/msg00005.html -COMMON_DEPEND=" - app-crypt/libsecret - >=app-accessibility/at-spi2-atk-2.5.3 - >=dev-libs/atk-2[introspection] - >=app-crypt/gcr-3.7.5[introspection] - >=dev-libs/glib-2.35:2 - >=dev-libs/gjs-1.35.8 - >=dev-libs/gobject-introspection-0.10.1 - >=x11-libs/gtk+-3.7.9:3[introspection] - >=media-libs/clutter-1.13.4:1.0[introspection] - >=dev-libs/json-glib-0.13.2 - >=dev-libs/libcroco-0.6.8:0.6 - >=gnome-base/gnome-desktop-3.7.90:3=[introspection] - >=gnome-base/gsettings-desktop-schemas-3.7.4 - >=gnome-base/gnome-keyring-3.3.90 - >=gnome-base/gnome-menus-3.5.3:3[introspection] - gnome-base/libgnome-keyring - >=gnome-extra/evolution-data-server-3.5.3:= - >=media-libs/gstreamer-0.11.92:1.0 - >=net-im/telepathy-logger-0.2.4[introspection] - >=net-libs/telepathy-glib-0.19[introspection] - >=sys-auth/polkit-0.100[introspection] - >=x11-libs/libXfixes-5.0 - >=x11-wm/mutter-3.8.3[introspection] - >=x11-libs/startup-notification-0.11 - - ${PYTHON_DEPS} - dev-python/pygobject:3[${PYTHON_USEDEP}] - - dev-libs/dbus-glib - dev-libs/libxml2:2 - gnome-base/librsvg - media-libs/libcanberra[gtk3] - media-libs/mesa - >=media-sound/pulseaudio-2 - >=net-libs/libsoup-2.40:2.4[introspection] - x11-libs/libX11 - x11-libs/gdk-pixbuf:2[introspection] - x11-libs/pango[introspection] - x11-apps/mesa-progs - - bluetooth? ( >=net-wireless/gnome-bluetooth-3.5[introspection] ) - networkmanager? ( >=net-misc/networkmanager-0.9.6[introspection] ) -" -# Runtime-only deps are probably incomplete and approximate. -# Introspection deps generated using: -# grep -roe "imports.gi.*" gnome-shell-* | cut -f2 -d: | sort | uniq -# Each block: -# 1. Pull in polkit-0.101 for pretty authorization dialogs -# 2. Introspection stuff needed via imports.gi.* -# 3. gnome-session is needed for gnome-session-quit -# 4. Control shell settings -# 5. Systemd needed for suspending support -# 6. xdg-utils needed for xdg-open, used by extension tool -# 7. gnome-icon-theme-symbolic and dejavu font neeed for various icons & arrows -# 8. IBus is needed for i18n integration -# 9. mobile-broadband-provider-info, timezone-data for shell-mobile-providers.c -RDEPEND="${COMMON_DEPEND} - >=sys-auth/polkit-0.101[introspection] - - >=app-accessibility/caribou-0.4.8 - >=gnome-base/gdm-3.5[introspection] - >=gnome-base/libgnomekbd-2.91.4[introspection] - media-libs/cogl[introspection] - >=sys-apps/accountsservice-0.6.14[introspection] - sys-power/upower[introspection] - - >=gnome-base/gnome-session-2.91.91 - >=gnome-base/gnome-settings-daemon-3.8.3 - >=gnome-base/gnome-control-center-3.8.3[bluetooth(+)?] - - >=sys-apps/systemd-31 - - x11-misc/xdg-utils - - media-fonts/dejavu - x11-themes/gnome-icon-theme-symbolic - - i18n? ( >=app-i18n/ibus-1.4.99[dconf,gtk3,introspection] ) - networkmanager? ( - net-misc/mobile-broadband-provider-info - sys-libs/timezone-data ) -" -DEPEND="${COMMON_DEPEND} - dev-libs/libxslt - >=dev-util/gtk-doc-am-1.17 - >=dev-util/intltool-0.40 - gnome-base/gnome-common - >=sys-devel/gettext-0.17 - virtual/pkgconfig - !!=dev-lang/spidermonkey-1.8.2* -" -# libmozjs.so is picked up from /usr/lib while compiling, so block at build-time -# https://bugs.gentoo.org/show_bug.cgi?id=360413 - -REQUIRED_USE="${PYTHON_REQUIRED_USE}" - -src_prepare() { - # Fix automagic gnome-bluetooth dep, bug #398145 - epatch "${FILESDIR}/${PN}-3.7.90-bluetooth-flag.patch" - - # Make networkmanager optional, bug #398593 - epatch "${FILESDIR}/${PN}-3.8.3-networkmanager-flag.patch" - - # Re-lock the screen if we're restarted from a previously crashed shell (from 'master') - epatch "${FILESDIR}/${PN}-3.8.3-relock-screen.patch" - - # Apply patches from gnome-3.8 branch - epatch "${WORKDIR}/${P}-patches/"*.patch - - epatch_user - - eautoreconf - gnome2_src_prepare -} - -src_configure() { - # Do not error out on warnings - gnome2_src_configure \ - --enable-man \ - --disable-jhbuild-wrapper-script \ - $(use_with bluetooth) \ - $(use_enable networkmanager) \ - BROWSER_PLUGIN_DIR="${EPREFIX}"/usr/$(get_libdir)/nsbrowser/plugins -} - -src_install() { - gnome2_src_install - python_replicate_script "${ED}/usr/bin/gnome-shell-extension-tool" - python_replicate_script "${ED}/usr/bin/gnome-shell-perf-tool" - - # Required for gnome-shell on hardened/PaX, bug #398941 - # Future-proof for >=spidermonkey-1.8.7 following polkit's example - if has_version '=dev-lang/spidermonkey-1.8.7[jit]'; then - pax-mark m "${ED}usr/bin/gnome-shell" - fi - # Required for gnome-shell on hardened/PaX #457146 and #457194 - # PaX EMUTRAMP need to be on - if has_version '>=dev-libs/libffi-3.0.13[pax_kernel]'; then - pax-mark E "${ED}usr/bin/gnome-shell" - fi -} - -pkg_postinst() { - gnome2_pkg_postinst - - if ! has_version 'media-libs/gst-plugins-good:1.0' || \ - ! has_version 'media-plugins/gst-plugins-vpx:1.0'; then - ewarn "To make use of GNOME Shell's built-in screen recording utility," - ewarn "you need to either install media-libs/gst-plugins-good:1.0" - ewarn "and media-plugins/gst-plugins-vpx:1.0, or use dconf-editor to change" - ewarn "apps.gnome-shell.recorder/pipeline to what you want to use." - fi - - if ! has_version ">=x11-base/xorg-server-1.11"; then - ewarn "If you use multiple screens, it is highly recommended that you" - ewarn "upgrade to >=x11-base/xorg-server-1.11 to be able to make use of" - ewarn "pointer barriers which will make it easier to use hot corners." - fi - - if has_version "=media-libs/gstreamer-0.11.92 ) +# +# gnome-shell/gnome-control-center/mutter/gnome-settings-daemon better to be in sync for 3.8.3 +# https://mail.gnome.org/archives/gnome-announce-list/2013-June/msg00005.html +COMMON_DEPEND=" + app-crypt/libsecret + >=app-accessibility/at-spi2-atk-2.5.3 + >=dev-libs/atk-2[introspection] + >=app-crypt/gcr-3.7.5[introspection] + >=dev-libs/glib-2.35:2 + >=dev-libs/gjs-1.35.8 + >=dev-libs/gobject-introspection-0.10.1 + >=x11-libs/gtk+-3.7.9:3[introspection] + >=media-libs/clutter-1.13.4:1.0[introspection] + >=dev-libs/json-glib-0.13.2 + >=dev-libs/libcroco-0.6.8:0.6 + >=gnome-base/gnome-desktop-3.7.90:3=[introspection] + >=gnome-base/gsettings-desktop-schemas-3.7.4 + >=gnome-base/gnome-keyring-3.3.90 + >=gnome-base/gnome-menus-3.5.3:3[introspection] + gnome-base/libgnome-keyring + >=gnome-extra/evolution-data-server-3.5.3:= + >=media-libs/gstreamer-0.11.92:1.0 + >=net-im/telepathy-logger-0.2.4[introspection] + >=net-libs/telepathy-glib-0.19[introspection] + >=sys-auth/polkit-0.100[introspection] + >=x11-libs/libXfixes-5.0 + >=x11-wm/mutter-3.8.3[introspection] + >=x11-libs/startup-notification-0.11 + + ${PYTHON_DEPS} + dev-python/pygobject:3[${PYTHON_USEDEP}] + + dev-libs/dbus-glib + dev-libs/libxml2:2 + gnome-base/librsvg + media-libs/libcanberra[gtk3] + media-libs/mesa + >=media-sound/pulseaudio-2 + >=net-libs/libsoup-2.40:2.4[introspection] + x11-libs/libX11 + x11-libs/gdk-pixbuf:2[introspection] + x11-libs/pango[introspection] + x11-apps/mesa-progs + + bluetooth? ( >=net-wireless/gnome-bluetooth-3.5[introspection] ) + networkmanager? ( >=net-misc/networkmanager-0.9.6[introspection] ) +" +# Runtime-only deps are probably incomplete and approximate. +# Introspection deps generated using: +# grep -roe "imports.gi.*" gnome-shell-* | cut -f2 -d: | sort | uniq +# Each block: +# 1. Pull in polkit-0.101 for pretty authorization dialogs +# 2. Introspection stuff needed via imports.gi.* +# 3. gnome-session is needed for gnome-session-quit +# 4. Control shell settings +# 5. Systemd needed for suspending support +# 6. xdg-utils needed for xdg-open, used by extension tool +# 7. gnome-icon-theme-symbolic and dejavu font neeed for various icons & arrows +# 8. IBus is needed for i18n integration +# 9. mobile-broadband-provider-info, timezone-data for shell-mobile-providers.c +RDEPEND="${COMMON_DEPEND} + >=sys-auth/polkit-0.101[introspection] + + >=app-accessibility/caribou-0.4.8 + >=gnome-base/gdm-3.5[introspection] + >=gnome-base/libgnomekbd-2.91.4[introspection] + media-libs/cogl[introspection] + >=sys-apps/accountsservice-0.6.14[introspection] + sys-power/upower[introspection] + + >=gnome-base/gnome-session-2.91.91 + >=gnome-base/gnome-settings-daemon-3.8.3 + >=gnome-base/gnome-control-center-3.8.3[bluetooth(+)?] + + >=sys-apps/systemd-31 + + x11-misc/xdg-utils + + media-fonts/dejavu + x11-themes/gnome-icon-theme-symbolic + + i18n? ( >=app-i18n/ibus-1.4.99[dconf,gtk3,introspection] ) + networkmanager? ( + net-misc/mobile-broadband-provider-info + sys-libs/timezone-data ) +" +DEPEND="${COMMON_DEPEND} + dev-libs/libxslt + >=dev-util/gtk-doc-am-1.17 + >=dev-util/intltool-0.40 + gnome-base/gnome-common + >=sys-devel/gettext-0.17 + virtual/pkgconfig + !!=dev-lang/spidermonkey-1.8.2* +" +# libmozjs.so is picked up from /usr/lib while compiling, so block at build-time +# https://bugs.gentoo.org/show_bug.cgi?id=360413 + +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +src_prepare() { + # Change favorites defaults, bug #479918 + epatch "${FILESDIR}/${PN}-defaults.patch" + + # Fix automagic gnome-bluetooth dep, bug #398145 + epatch "${FILESDIR}/${PN}-3.7.90-bluetooth-flag.patch" + + # Make networkmanager optional, bug #398593 + epatch "${FILESDIR}/${PN}-3.8.3-networkmanager-flag.patch" + + # Re-lock the screen if we're restarted from a previously crashed shell (from 'master') + epatch "${FILESDIR}/${PN}-3.8.3-relock-screen.patch" + + # Reset opacity when not animating (from 3.8 branch) + epatch "${FILESDIR}/${P}-reset-opacity.patch" + + # Unconditionally allocate scrollbars (from 3.8 branch) + epatch "${FILESDIR}/${P}-allocate-scrollbars.patch" + + # ScreenShield: don't allow events through the lock dialog (from 3.8 branch) + epatch "${FILESDIR}/${P}-events-lock.patch" + + # Revert "background: fix asynchronous management of background loading operations" (#481918) + epatch "${FILESDIR}/${P}-revert-async.patch" + + # AppDisplay/FrequentView: filter out hidden applications (from 'master') + epatch "${FILESDIR}/${PN}-3.8.4-nodisplay.patch" + + epatch_user + + eautoreconf + gnome2_src_prepare +} + +src_configure() { + # Do not error out on warnings + gnome2_src_configure \ + --enable-man \ + --disable-jhbuild-wrapper-script \ + $(use_with bluetooth) \ + $(use_enable networkmanager) \ + BROWSER_PLUGIN_DIR="${EPREFIX}"/usr/$(get_libdir)/nsbrowser/plugins +} + +src_install() { + gnome2_src_install + python_replicate_script "${ED}/usr/bin/gnome-shell-extension-tool" + python_replicate_script "${ED}/usr/bin/gnome-shell-perf-tool" + + # Required for gnome-shell on hardened/PaX, bug #398941 + # Future-proof for >=spidermonkey-1.8.7 following polkit's example + if has_version '=dev-lang/spidermonkey-1.8.7[jit]'; then + pax-mark m "${ED}usr/bin/gnome-shell" + fi + # Required for gnome-shell on hardened/PaX #457146 and #457194 + # PaX EMUTRAMP need to be on + if has_version '>=dev-libs/libffi-3.0.13[pax_kernel]'; then + pax-mark E "${ED}usr/bin/gnome-shell" + fi +} + +pkg_postinst() { + gnome2_pkg_postinst + + if ! has_version 'media-libs/gst-plugins-good:1.0' || \ + ! has_version 'media-plugins/gst-plugins-vpx:1.0'; then + ewarn "To make use of GNOME Shell's built-in screen recording utility," + ewarn "you need to either install media-libs/gst-plugins-good:1.0" + ewarn "and media-plugins/gst-plugins-vpx:1.0, or use dconf-editor to change" + ewarn "apps.gnome-shell.recorder/pipeline to what you want to use." + fi + + if ! has_version ">=x11-base/xorg-server-1.11"; then + ewarn "If you use multiple screens, it is highly recommended that you" + ewarn "upgrade to >=x11-base/xorg-server-1.11 to be able to make use of" + ewarn "pointer barriers which will make it easier to use hot corners." + fi + + if has_version "