windowPreview: Track overlay state separately

We currently express the state as a combination of border visibility
and the eventual transition state. That's tedious, in particular if
we want to use the state outside the show()/hide() methods.

Just track the requested visibility in a separate property.

https://gitlab.gnome.org/Teams/Design/os-mockups/-/issues/81

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1605>
This commit is contained in:
Florian Müllner 2021-01-08 18:36:55 +01:00
parent de299f0a90
commit bc6849c7a2

View File

@ -275,6 +275,7 @@ var WindowPreview = GObject.registerClass({
this._selected = false;
this._overlayEnabled = true;
this._overlayShown = false;
this._closeRequested = false;
this._idleHideOverlayId = 0;
@ -457,14 +458,14 @@ var WindowPreview = GObject.registerClass({
if (!this._overlayEnabled)
return;
const ongoingTransition = this._border.get_transition('opacity');
// Don't do anything if we're fully visible already
if (this._border.visible && !ongoingTransition)
if (this._overlayShown)
return;
this._overlayShown = true;
// If we're supposed to animate and an animation in our direction
// is already happening, let that one continue
const ongoingTransition = this._border.get_transition('opacity');
if (animate &&
ongoingTransition &&
ongoingTransition.get_interval().peek_final_value() === 255)
@ -488,14 +489,14 @@ var WindowPreview = GObject.registerClass({
}
hideOverlay(animate) {
const ongoingTransition = this._border.get_transition('opacity');
// Don't do anything if we're fully hidden already
if (!this._border.visible && !ongoingTransition)
if (!this._overlayShown)
return;
this._overlayShown = false;
// If we're supposed to animate and an animation in our direction
// is already happening, let that one continue
const ongoingTransition = this._border.get_transition('opacity');
if (animate &&
ongoingTransition &&
ongoingTransition.get_interval().peek_final_value() === 0)