From bd850c3110e49b62b77d513146f848fea272cbfc Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Fri, 11 Dec 2020 09:44:53 -0300 Subject: [PATCH] overviewControls: Split FaderControl from SlidingControl The Dash will need only the fading aspect of SlidingControl in the next commit. Part-of: --- js/ui/overviewControls.js | 88 +++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 36 deletions(-) diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js index af0263f14..05a177df0 100644 --- a/js/ui/overviewControls.js +++ b/js/ui/overviewControls.js @@ -100,8 +100,57 @@ var SlideLayout = GObject.registerClass({ } }); +var FaderControl = GObject.registerClass( +class FaderControl extends St.Widget { + _init(params) { + super._init(params); + + this._inDrag = false; + + Main.overview.connect('item-drag-begin', this._onDragBegin.bind(this)); + Main.overview.connect('item-drag-end', this._onDragEnd.bind(this)); + Main.overview.connect('item-drag-cancelled', this._onDragEnd.bind(this)); + + Main.overview.connect('window-drag-begin', this._onWindowDragBegin.bind(this)); + Main.overview.connect('window-drag-cancelled', this._onWindowDragEnd.bind(this)); + Main.overview.connect('window-drag-end', this._onWindowDragEnd.bind(this)); + } + + _onWindowDragBegin() { + this._onDragBegin(); + } + + _onWindowDragEnd() { + this._onDragEnd(); + } + + _onDragBegin() { + this._inDrag = true; + } + + _onDragEnd() { + this._inDrag = false; + } + + fadeIn() { + this.ease({ + opacity: 255, + duration: SIDE_CONTROLS_ANIMATION_TIME / 2, + mode: Clutter.AnimationMode.EASE_IN_QUAD, + }); + } + + fadeHalf() { + this.ease({ + opacity: 128, + duration: SIDE_CONTROLS_ANIMATION_TIME / 2, + mode: Clutter.AnimationMode.EASE_OUT_QUAD, + }); + } +}); + var SlidingControl = GObject.registerClass( -class SlidingControl extends St.Widget { +class SlidingControl extends FaderControl { _init(params) { params = Params.parse(params, { slideDirection: SlideDirection.LEFT }); @@ -114,17 +163,8 @@ class SlidingControl extends St.Widget { }); this._visible = true; - this._inDrag = false; Main.overview.connect('hiding', this._onOverviewHiding.bind(this)); - - Main.overview.connect('item-drag-begin', this._onDragBegin.bind(this)); - Main.overview.connect('item-drag-end', this._onDragEnd.bind(this)); - Main.overview.connect('item-drag-cancelled', this._onDragEnd.bind(this)); - - Main.overview.connect('window-drag-begin', this._onWindowDragBegin.bind(this)); - Main.overview.connect('window-drag-cancelled', this._onWindowDragEnd.bind(this)); - Main.overview.connect('window-drag-end', this._onWindowDragEnd.bind(this)); } _getSlide() { @@ -183,41 +223,17 @@ class SlidingControl extends St.Widget { this.slideOut(); } - _onWindowDragBegin() { - this._onDragBegin(); - } - - _onWindowDragEnd() { - this._onDragEnd(); - } - _onDragBegin() { - this._inDrag = true; + super._onDragBegin(); this._updateTranslation(); this._updateSlide(); } _onDragEnd() { - this._inDrag = false; + super._onDragEnd(); this._updateSlide(); } - fadeIn() { - this.ease({ - opacity: 255, - duration: SIDE_CONTROLS_ANIMATION_TIME / 2, - mode: Clutter.AnimationMode.EASE_IN_QUAD, - }); - } - - fadeHalf() { - this.ease({ - opacity: 128, - duration: SIDE_CONTROLS_ANIMATION_TIME / 2, - mode: Clutter.AnimationMode.EASE_OUT_QUAD, - }); - } - slideIn() { this._visible = true; // we will update slide_x and the translation from pageEmpty