From 52023068ba78a2f8b71ef1be24fa463d8adfa12c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 9 Sep 2019 20:15:31 +0200 Subject: [PATCH] Drop downstream revert The actual bug is in the background-logo extension, so drop the downstream revert and instead conflict with unfixed extension versions. --- ...Ease-non-animatable-actor-properties.patch | 557 ------------------ gnome-shell.spec | 6 +- 2 files changed, 3 insertions(+), 560 deletions(-) delete mode 100644 0001-Revert-js-Ease-non-animatable-actor-properties.patch diff --git a/0001-Revert-js-Ease-non-animatable-actor-properties.patch b/0001-Revert-js-Ease-non-animatable-actor-properties.patch deleted file mode 100644 index 8000e02..0000000 --- a/0001-Revert-js-Ease-non-animatable-actor-properties.patch +++ /dev/null @@ -1,557 +0,0 @@ -From 00e2a5c5a540273ac03e6b43bf37817c903c28f4 Mon Sep 17 00:00:00 2001 -From: Adam Williamson -Date: Fri, 23 Aug 2019 12:48:47 -0700 -Subject: [PATCH] Revert "js: Ease non-animatable actor properties" - -This reverts commit fffe7bdf9cde5817736cb5f7fbe777b5c08d122a. -It causes breakage in the overview: -https://bugzilla.redhat.com/show_bug.cgi?id=1740897 ---- - js/ui/keyboard.js | 27 ++++++----- - js/ui/lightbox.js | 68 +++++++++++++-------------- - js/ui/messageList.js | 19 ++++---- - js/ui/osdWindow.js | 9 ++-- - js/ui/overview.js | 29 +++++------- - js/ui/overviewControls.js | 15 +++--- - js/ui/windowManager.js | 37 ++++++++++----- - js/ui/workspaceThumbnail.js | 94 ++++++++++++++++++++----------------- - 8 files changed, 160 insertions(+), 138 deletions(-) - -diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js -index 462d860c4..1d26e6143 100644 ---- a/js/ui/keyboard.js -+++ b/js/ui/keyboard.js -@@ -11,6 +11,7 @@ const Layout = imports.ui.layout; - const Main = imports.ui.main; - const PageIndicators = imports.ui.pageIndicators; - const PopupMenu = imports.ui.popupMenu; -+const Tweener = imports.ui.tweener; - - var KEYBOARD_REST_TIME = Layout.KEYBOARD_ANIMATION_TIME * 2; - var KEY_LONG_PRESS_TIME = 250; -@@ -711,13 +712,15 @@ var EmojiPager = GObject.registerClass({ - let relDelta = Math.abs(this._delta - value) / this._width; - let time = PANEL_SWITCH_ANIMATION_TIME * Math.abs(relDelta); - -- this.remove_all_transitions(); -- this.ease_property('delta', value, { -- duration: time, -- onComplete: () => { -- this.setCurrentPage(this.getFollowingPage()); -- } -- }); -+ Tweener.removeTweens(this); -+ Tweener.addTween(this, -+ { delta: value, -+ time: time / 1000, -+ transition: 'easeInOutQuad', -+ onComplete() { -+ this.setCurrentPage(this.getFollowingPage()); -+ } -+ }); - } - } - -@@ -725,10 +728,12 @@ var EmojiPager = GObject.registerClass({ - let relDelta = Math.abs(this._delta) / this.width; - let time = PANEL_SWITCH_ANIMATION_TIME * Math.abs(relDelta); - -- this.remove_all_transitions(); -- this.ease_property('delta', 0, { -- duration: time, -- }); -+ Tweener.removeTweens(this); -+ Tweener.addTween(this, -+ { delta: 0, -+ time: time / 1000, -+ transition: 'easeInOutQuad', -+ }); - } - - _initPagingInfo() { -diff --git a/js/ui/lightbox.js b/js/ui/lightbox.js -index fbbc01168..0f2578154 100644 ---- a/js/ui/lightbox.js -+++ b/js/ui/lightbox.js -@@ -5,6 +5,7 @@ const { Clutter, GObject, Shell, St } = imports.gi; - const Signals = imports.signals; - - const Params = imports.misc.params; -+const Tweener = imports.ui.tweener; - - var DEFAULT_FADE_FACTOR = 0.4; - var VIGNETTE_BRIGHTNESS = 0.2; -@@ -174,31 +175,29 @@ var Lightbox = class Lightbox { - show(fadeInTime) { - fadeInTime = fadeInTime || 0; - -- this.actor.remove_all_transitions(); -- -- let onComplete = () => { -- this.shown = true; -- this.emit('shown'); -- }; -- - if (this._radialEffect) { -- this.actor.ease_property( -- '@effects.radial.brightness', VIGNETTE_BRIGHTNESS, { -- duration: fadeInTime, -- mode: Clutter.AnimationMode.EASE_OUT_QUAD -- }); -- this.actor.ease_property( -- '@effects.radial.sharpness', VIGNETTE_SHARPNESS, { -- duration: fadeInTime, -- mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- onComplete -- }); -+ let effect = this.actor.get_effect('radial'); -+ Tweener.removeTweens(effect); -+ Tweener.addTween(effect, -+ { brightness: VIGNETTE_BRIGHTNESS, -+ sharpness: VIGNETTE_SHARPNESS, -+ time: fadeInTime / 1000, -+ transition: 'easeOutQuad', -+ onComplete: () => { -+ this.shown = true; -+ this.emit('shown'); -+ } -+ }); - } else { -+ this.actor.remove_all_transitions(); - this.actor.ease({ - opacity: 255 * this._fadeFactor, - duration: fadeInTime, - mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- onComplete -+ onComplete: () => { -+ this.shown = true; -+ this.emit('shown'); -+ } - }); - } - -@@ -209,28 +208,29 @@ var Lightbox = class Lightbox { - fadeOutTime = fadeOutTime || 0; - - this.shown = false; -- this.actor.remove_all_transitions(); -- -- let onComplete = () => this.actor.hide(); - - if (this._radialEffect) { -- this.actor.ease_property( -- '@effects.radial.brightness', 1.0, { -- duration: fadeOutTime, -- mode: Clutter.AnimationMode.EASE_OUT_QUAD -- }); -- this.actor.ease_property( -- '@effects.radial.sharpness', 0.0, { -- duration: fadeOutTime, -- mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- onComplete -- }); -+ let effect = this.actor.get_effect('radial'); -+ Tweener.removeTweens(effect); -+ Tweener.addTween(effect, -+ { brightness: 1.0, -+ sharpness: 0.0, -+ opacity: 0, -+ time: fadeOutTime / 1000, -+ transition: 'easeOutQuad', -+ onComplete: () => { -+ this.actor.hide(); -+ } -+ }); - } else { -+ this.actor.remove_all_transitions(); - this.actor.ease({ - opacity: 0, - duration: fadeOutTime, - mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- onComplete -+ onComplete: () => { -+ this.actor.hide(); -+ } - }); - } - } -diff --git a/js/ui/messageList.js b/js/ui/messageList.js -index 4dcdb6d7f..8fbd79a84 100644 ---- a/js/ui/messageList.js -+++ b/js/ui/messageList.js -@@ -4,6 +4,7 @@ const MessageTray = imports.ui.messageTray; - const Signals = imports.signals; - - const Calendar = imports.ui.calendar; -+const Tweener = imports.ui.tweener; - const Util = imports.misc.util; - - var MESSAGE_ANIMATION_TIME = 100; -@@ -439,11 +440,10 @@ var Message = class Message { - } - - if (animate) { -- this._bodyStack.ease_property('@layout.expansion', 1, { -- progress_mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- duration: MessageTray.ANIMATION_TIME, -- }); -- -+ Tweener.addTween(this._bodyStack.layout_manager, -+ { expansion: 1, -+ time: MessageTray.ANIMATION_TIME / 1000, -+ transition: 'easeOutQuad' }); - this._actionBin.scale_y = 0; - this._actionBin.ease({ - scale_y: 1, -@@ -460,11 +460,10 @@ var Message = class Message { - - unexpand(animate) { - if (animate) { -- this._bodyStack.ease_property('@layout.expansion', 0, { -- progress_mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- duration: MessageTray.ANIMATION_TIME, -- }); -- -+ Tweener.addTween(this._bodyStack.layout_manager, -+ { expansion: 0, -+ time: MessageTray.ANIMATION_TIME / 1000, -+ transition: 'easeOutQuad' }); - this._actionBin.ease({ - scale_y: 0, - duration: MessageTray.ANIMATION_TIME, -diff --git a/js/ui/osdWindow.js b/js/ui/osdWindow.js -index 0f85dce38..cdcd36a18 100644 ---- a/js/ui/osdWindow.js -+++ b/js/ui/osdWindow.js -@@ -7,6 +7,7 @@ const Mainloop = imports.mainloop; - const BarLevel = imports.ui.barLevel; - const Layout = imports.ui.layout; - const Main = imports.ui.main; -+const Tweener = imports.ui.tweener; - - var HIDE_TIMEOUT = 1500; - var FADE_TIME = 100; -@@ -112,10 +113,10 @@ var OsdWindow = class { - this._level.visible = (value != undefined); - if (value != undefined) { - if (this.actor.visible) -- this._level.ease_property('value', value, { -- mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- duration: LEVEL_ANIMATION_TIME -- }); -+ Tweener.addTween(this._level, -+ { value: value, -+ time: LEVEL_ANIMATION_TIME / 1000, -+ transition: 'easeOutQuad' }); - else - this._level.value = value; - } -diff --git a/js/ui/overview.js b/js/ui/overview.js -index 1325eff6b..57dcca278 100644 ---- a/js/ui/overview.js -+++ b/js/ui/overview.js -@@ -13,6 +13,7 @@ const Main = imports.ui.main; - const MessageTray = imports.ui.messageTray; - const OverviewControls = imports.ui.overviewControls; - const Params = imports.misc.params; -+const Tweener = imports.ui.tweener; - const WorkspaceThumbnail = imports.ui.workspaceThumbnail; - - // Time for initial animation going into Overview mode -@@ -173,28 +174,24 @@ var Overview = class { - _unshadeBackgrounds() { - let backgrounds = this._backgroundGroup.get_children(); - for (let i = 0; i < backgrounds.length; i++) { -- backgrounds[i].ease_property('brightness', 1.0, { -- duration: SHADE_ANIMATION_TIME, -- mode: Clutter.AnimationMode.EASE_OUT_QUAD -- }); -- backgrounds[i].ease_property('vignette-sharpness', 0.0, { -- duration: SHADE_ANIMATION_TIME, -- mode: Clutter.AnimationMode.EASE_OUT_QUAD -- }); -+ Tweener.addTween(backgrounds[i], -+ { brightness: 1.0, -+ vignette_sharpness: 0.0, -+ time: SHADE_ANIMATION_TIME / 1000, -+ transition: 'easeOutQuad' -+ }); - } - } - - _shadeBackgrounds() { - let backgrounds = this._backgroundGroup.get_children(); - for (let i = 0; i < backgrounds.length; i++) { -- backgrounds[i].ease_property('brightness', Lightbox.VIGNETTE_BRIGHTNESS, { -- duration: SHADE_ANIMATION_TIME, -- mode: Clutter.AnimationMode.EASE_OUT_QUAD -- }); -- backgrounds[i].ease_property('vignette-sharpness', Lightbox.VIGNETTE_SHARPNESS, { -- duration: SHADE_ANIMATION_TIME, -- mode: Clutter.AnimationMode.EASE_OUT_QUAD -- }); -+ Tweener.addTween(backgrounds[i], -+ { brightness: Lightbox.VIGNETTE_BRIGHTNESS, -+ vignette_sharpness: Lightbox.VIGNETTE_SHARPNESS, -+ time: SHADE_ANIMATION_TIME / 1000, -+ transition: 'easeOutQuad' -+ }); - } - } - -diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js -index cf24a5e56..761c69f44 100644 ---- a/js/ui/overviewControls.js -+++ b/js/ui/overviewControls.js -@@ -6,6 +6,7 @@ const { Clutter, GObject, Meta, St } = imports.gi; - const Dash = imports.ui.dash; - const Main = imports.ui.main; - const Params = imports.misc.params; -+const Tweener = imports.ui.tweener; - const ViewSelector = imports.ui.viewSelector; - const WorkspaceThumbnail = imports.ui.workspaceThumbnail; - -@@ -146,10 +147,9 @@ var SlidingControl = class { - } - - _updateSlide() { -- this.actor.ease_property('@layout.slide-x', this._getSlide(), { -- mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- duration: SIDE_CONTROLS_ANIMATION_TIME, -- }); -+ Tweener.addTween(this.layout, { slide_x: this._getSlide(), -+ time: SIDE_CONTROLS_ANIMATION_TIME / 1000, -+ transition: 'easeOutQuad' }); - } - - getVisibleWidth() { -@@ -185,10 +185,9 @@ var SlidingControl = class { - return; - - this.layout.translation_x = translationStart; -- this.actor.ease_property('@layout.translation-x', translationEnd, { -- mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- duration: SIDE_CONTROLS_ANIMATION_TIME, -- }); -+ Tweener.addTween(this.layout, { translation_x: translationEnd, -+ time: SIDE_CONTROLS_ANIMATION_TIME / 1000, -+ transition: 'easeOutQuad' }); - } - - _onOverviewHiding() { -diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js -index 346485ffd..b8200c996 100644 ---- a/js/ui/windowManager.js -+++ b/js/ui/windowManager.js -@@ -12,6 +12,7 @@ const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup; - const InhibitShortcutsDialog = imports.ui.inhibitShortcutsDialog; - const Main = imports.ui.main; - const ModalDialog = imports.ui.modalDialog; -+const Tweener = imports.ui.tweener; - const WindowMenu = imports.ui.windowMenu; - const PadOsd = imports.ui.padOsd; - const EdgeDragAction = imports.ui.edgeDragAction; -@@ -117,18 +118,17 @@ class DisplayChangeDialog extends ModalDialog.ModalDialog { - var WindowDimmer = class { - constructor(actor) { - this._brightnessEffect = new Clutter.BrightnessContrastEffect({ -- name: 'dim', - enabled: false - }); - actor.add_effect(this._brightnessEffect); - this.actor = actor; - this._enabled = true; -+ this._dimFactor = 0.0; - } - - _syncEnabled() { -- let animating = this.actor.get_transition('@effects.dim.brightness') != null; - let dimmed = this._brightnessEffect.brightness.red != 127; -- this._brightnessEffect.enabled = this._enabled && (animating || dimmed); -+ this._brightnessEffect.enabled = (this._enabled && dimmed); - } - - setEnabled(enabled) { -@@ -137,16 +137,27 @@ var WindowDimmer = class { - } - - setDimmed(dimmed, animate) { -- let val = 127 * (1 + (dimmed ? 1 : 0) * DIM_BRIGHTNESS); -- let color = Clutter.Color.new(val, val, val, 255); -- -- this.actor.ease_property('@effects.dim.brightness', color, { -- mode: Clutter.AnimationMode.LINEAR, -- duration: (dimmed ? DIM_TIME : UNDIM_TIME) * (animate ? 1 : 0), -- onComplete: () => this._syncEnabled() -- }); -- -- this._syncEnabled(); -+ let factor = dimmed ? 1.0 : 0.0; -+ -+ if (animate) { -+ Tweener.addTween(this, { -+ _dimFactor: factor, -+ time: (dimmed ? DIM_TIME : UNDIM_TIME) / 1000, -+ transition: 'linear', -+ onUpdate: () => { -+ let val = 127 * (1 + this._dimFactor * DIM_BRIGHTNESS); -+ let color = Clutter.Color.new(val, val, val, 255); -+ this._brightnessEffect.brightness = color; -+ this._syncEnabled(); -+ } -+ }); -+ } else { -+ this._dimFactor = factor; -+ let val = 127 * (1 + this._dimFactor * DIM_BRIGHTNESS); -+ let color = Clutter.Color.new(val, val, val, 255); -+ this._brightnessEffect.brightness = color; -+ this._syncEnabled(); -+ } - } - }; - -diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js -index c516934c9..989f088d7 100644 ---- a/js/ui/workspaceThumbnail.js -+++ b/js/ui/workspaceThumbnail.js -@@ -8,6 +8,7 @@ const Signals = imports.signals; - const Background = imports.ui.background; - const DND = imports.ui.dnd; - const Main = imports.ui.main; -+const Tweener = imports.ui.tweener; - const Workspace = imports.ui.workspace; - const WorkspacesView = imports.ui.workspacesView; - -@@ -1071,6 +1072,15 @@ var ThumbnailsBox = GObject.registerClass({ - } - } - -+ _tweenScale() { -+ Tweener.addTween(this, -+ { scale: this._targetScale, -+ time: RESCALE_ANIMATION_TIME / 1000, -+ transition: 'easeOutQuad', -+ onComplete: this._queueUpdateStates, -+ onCompleteScope: this }); -+ } -+ - _updateStates() { - this._stateUpdateQueued = false; - -@@ -1082,14 +1092,15 @@ var ThumbnailsBox = GObject.registerClass({ - this._iterateStateThumbnails(ThumbnailState.REMOVING, thumbnail => { - this._setThumbnailState(thumbnail, ThumbnailState.ANIMATING_OUT); - -- thumbnail.ease_property('slide-position', 1, { -- duration: SLIDE_ANIMATION_TIME, -- mode: Clutter.AnimationMode.LINEAR, -- onComplete: () => { -- this._setThumbnailState(thumbnail, ThumbnailState.ANIMATED_OUT); -- this._queueUpdateStates(); -- } -- }); -+ Tweener.addTween(thumbnail, -+ { slide_position: 1, -+ time: SLIDE_ANIMATION_TIME / 1000, -+ transition: 'linear', -+ onComplete: () => { -+ this._setThumbnailState(thumbnail, ThumbnailState.ANIMATED_OUT); -+ this._queueUpdateStates(); -+ } -+ }); - }); - - // As long as things are sliding out, don't proceed -@@ -1099,28 +1110,25 @@ var ThumbnailsBox = GObject.registerClass({ - // Once that's complete, we can start scaling to the new size and collapse any removed thumbnails - this._iterateStateThumbnails(ThumbnailState.ANIMATED_OUT, thumbnail => { - this._setThumbnailState(thumbnail, ThumbnailState.COLLAPSING); -- thumbnail.ease_property('collapse-fraction', 1, { -- duration: RESCALE_ANIMATION_TIME, -- mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- onComplete: () => { -- this._stateCounts[thumbnail.state]--; -- thumbnail.state = ThumbnailState.DESTROYED; -- -- let index = this._thumbnails.indexOf(thumbnail); -- this._thumbnails.splice(index, 1); -- thumbnail.destroy(); -- -- this._queueUpdateStates(); -- } -- }); -+ Tweener.addTween(thumbnail, -+ { collapse_fraction: 1, -+ time: RESCALE_ANIMATION_TIME / 1000, -+ transition: 'easeOutQuad', -+ onComplete: () => { -+ this._stateCounts[thumbnail.state]--; -+ thumbnail.state = ThumbnailState.DESTROYED; -+ -+ let index = this._thumbnails.indexOf(thumbnail); -+ this._thumbnails.splice(index, 1); -+ thumbnail.destroy(); -+ -+ this._queueUpdateStates(); -+ } -+ }); - }); - - if (this._pendingScaleUpdate) { -- this.ease_property('scale', this._targetScale, { -- mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- duration: RESCALE_ANIMATION_TIME, -- onComplete: () => this._queueUpdateStates() -- }); -+ this._tweenScale(); - this._pendingScaleUpdate = false; - } - -@@ -1131,13 +1139,14 @@ var ThumbnailsBox = GObject.registerClass({ - // And then slide in any new thumbnails - this._iterateStateThumbnails(ThumbnailState.NEW, thumbnail => { - this._setThumbnailState(thumbnail, ThumbnailState.ANIMATING_IN); -- thumbnail.ease_property('slide-position', 0, { -- duration: SLIDE_ANIMATION_TIME, -- mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- onComplete: () => { -- this._setThumbnailState(thumbnail, ThumbnailState.NORMAL); -- } -- }); -+ Tweener.addTween(thumbnail, -+ { slide_position: 0, -+ time: SLIDE_ANIMATION_TIME / 1000, -+ transition: 'easeOutQuad', -+ onComplete: () => { -+ this._setThumbnailState(thumbnail, ThumbnailState.NORMAL); -+ } -+ }); - }); - } - -@@ -1354,13 +1363,14 @@ var ThumbnailsBox = GObject.registerClass({ - let indicatorThemeNode = this._indicator.get_theme_node(); - let indicatorTopFullBorder = indicatorThemeNode.get_padding(St.Side.TOP) + indicatorThemeNode.get_border_width(St.Side.TOP); - this.indicator_y = this._indicator.allocation.y1 + indicatorTopFullBorder; -- this.ease_property('indicator-y', thumbnail.allocation.y1, { -- progress_mode: Clutter.AnimationMode.EASE_OUT_QUAD, -- duration: WorkspacesView.WORKSPACE_SWITCH_TIME, -- onComplete: () => { -- this._animatingIndicator = false; -- this._queueUpdateStates(); -- } -- }); -+ Tweener.addTween(this, -+ { indicator_y: thumbnail.allocation.y1, -+ time: WorkspacesView.WORKSPACE_SWITCH_TIME / 1000, -+ transition: 'easeOutQuad', -+ onComplete: () => { -+ this._animatingIndicator = false; -+ this._queueUpdateStates(); -+ } -+ }); - } - }); --- -2.23.0 - diff --git a/gnome-shell.spec b/gnome-shell.spec index b9a60d9..e390d70 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -16,9 +16,6 @@ Patch1: gnome-shell-favourite-apps-firefox.patch # This should go upstream once systemd has a generic interface for this Patch2: 0001-endSessionDialog-Immediately-add-buttons-to-the-dial.patch Patch3: 0002-endSessionDialog-Support-rebooting-into-the-bootload.patch -# Revert fffe7bdf9c to avoid -# https://bugzilla.redhat.com/show_bug.cgi?id=1740897 -Patch4: 0001-Revert-js-Ease-non-animatable-actor-properties.patch %define libcroco_version 0.6.8 %define eds_version 3.33.1 @@ -131,6 +128,9 @@ Obsoletes: python2-caribou < 0.4.21-10 Obsoletes: python3-caribou < 0.4.21-10 %endif +# https://bugzilla.redhat.com/show_bug.cgi?id=1740897 +Conflicts: gnome-shell-extension-background-logo < 3.34.0 + %description GNOME Shell provides core user interface functions for the GNOME 3 desktop, like switching to windows and launching applications. GNOME Shell takes