overviewControls: Split FaderControl from SlidingControl

The Dash will need only the fading aspect of SlidingControl in the
next commit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1559>
This commit is contained in:
Georges Basile Stavracas Neto 2020-12-11 09:44:53 -03:00 committed by Marge Bot
parent ea02aa399d
commit bd850c3110

View File

@ -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