[gnome-shell/gbsneto/40-stuff: 4/68] Remove workspace thumbnails




commit 5dc81d9cdbbc0409773548f237e81922224170df
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu May 28 16:27:34 2020 -0300

    Remove workspace thumbnails
    
    [TODO: commit message]

 js/js-resources.gresource.xml |    1 -
 js/ui/overview.js             |    4 +-
 js/ui/overviewControls.js     |  311 +---------
 js/ui/workspaceThumbnail.js   | 1362 -----------------------------------------
 4 files changed, 2 insertions(+), 1676 deletions(-)
---
diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml
index e7c0dda007..707df4604b 100644
--- a/js/js-resources.gresource.xml
+++ b/js/js-resources.gresource.xml
@@ -112,7 +112,6 @@
     <file>ui/windowPreview.js</file>
     <file>ui/workspace.js</file>
     <file>ui/workspaceSwitcherPopup.js</file>
-    <file>ui/workspaceThumbnail.js</file>
     <file>ui/workspacesView.js</file>
     <file>ui/xdndHandler.js</file>
 
diff --git a/js/ui/overview.js b/js/ui/overview.js
index 042e80a0aa..42d6739bfd 100644
--- a/js/ui/overview.js
+++ b/js/ui/overview.js
@@ -16,7 +16,6 @@ const Main = imports.ui.main;
 const MessageTray = imports.ui.messageTray;
 const OverviewControls = imports.ui.overviewControls;
 const Params = imports.misc.params;
-const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
 
 // Must be less than ANIMATION_TIME, since we switch to
 // or from the overview completely after ANIMATION_TIME,
@@ -358,8 +357,7 @@ var Overview = class {
     _onDragMotion(dragEvent) {
         let targetIsWindow = dragEvent.targetActor &&
                              dragEvent.targetActor._delegate &&
-                             dragEvent.targetActor._delegate.metaWindow &&
-                             !(dragEvent.targetActor._delegate instanceof WorkspaceThumbnail.WindowClone);
+                             dragEvent.targetActor._delegate.metaWindow;
 
         this._windowSwitchTimestamp = global.get_current_time();
 
diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js
index a31c3c4055..d51404e284 100644
--- a/js/ui/overviewControls.js
+++ b/js/ui/overviewControls.js
@@ -1,105 +1,15 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 /* exported ControlsManager */
 
-const { Clutter, GObject, Meta, St } = imports.gi;
+const { Clutter, GObject, St } = imports.gi;
 
 const Dash = imports.ui.dash;
 const Main = imports.ui.main;
-const Params = imports.misc.params;
 const ViewSelector = imports.ui.viewSelector;
-const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
 const Overview = imports.ui.overview;
 
 var SIDE_CONTROLS_ANIMATION_TIME = Overview.ANIMATION_TIME;
 
-function getRtlSlideDirection(direction, actor) {
-    let rtl = actor.text_direction == Clutter.TextDirection.RTL;
-    if (rtl) {
-        direction = direction == SlideDirection.LEFT
-            ? SlideDirection.RIGHT : SlideDirection.LEFT;
-    }
-    return direction;
-}
-
-var SlideDirection = {
-    LEFT: 0,
-    RIGHT: 1,
-};
-
-var SlideLayout = GObject.registerClass({
-    Properties: {
-        'slide-x': GObject.ParamSpec.double(
-            'slide-x', 'slide-x', 'slide-x',
-            GObject.ParamFlags.READWRITE,
-            0, 1, 1),
-    },
-}, class SlideLayout extends Clutter.FixedLayout {
-    _init(params) {
-        this._slideX = 1;
-        this._direction = SlideDirection.LEFT;
-
-        super._init(params);
-    }
-
-    vfunc_get_preferred_width(container, forHeight) {
-        let child = container.get_first_child();
-
-        let [minWidth, natWidth] = child.get_preferred_width(forHeight);
-
-        minWidth *= this._slideX;
-        natWidth *= this._slideX;
-
-        return [minWidth, natWidth];
-    }
-
-    vfunc_allocate(container, box) {
-        let child = container.get_first_child();
-
-        let availWidth = Math.round(box.x2 - box.x1);
-        let availHeight = Math.round(box.y2 - box.y1);
-        let [, natWidth] = child.get_preferred_width(availHeight);
-
-        // Align the actor inside the clipped box, as the actor's alignment
-        // flags only determine what to do if the allocated box is bigger
-        // than the actor's box.
-        let realDirection = getRtlSlideDirection(this._direction, child);
-        let alignX = realDirection == SlideDirection.LEFT
-            ? availWidth - natWidth
-            : availWidth - natWidth * this._slideX;
-
-        let actorBox = new Clutter.ActorBox();
-        actorBox.x1 = box.x1 + alignX;
-        actorBox.x2 = actorBox.x1 + (child.x_expand ? availWidth : natWidth);
-        actorBox.y1 = box.y1;
-        actorBox.y2 = actorBox.y1 + availHeight;
-
-        child.allocate(actorBox);
-    }
-
-    // eslint-disable-next-line camelcase
-    set slide_x(value) {
-        if (this._slideX == value)
-            return;
-        this._slideX = value;
-        this.notify('slide-x');
-        this.layout_changed();
-    }
-
-    // eslint-disable-next-line camelcase
-    get slide_x() {
-        return this._slideX;
-    }
-
-    set slideDirection(direction) {
-        this._direction = direction;
-        this.layout_changed();
-    }
-
-    get slideDirection() {
-        return this._direction;
-    }
-});
-
 var FaderControl = GObject.registerClass(
 class FaderControl extends St.Widget {
     _init(params) {
@@ -149,196 +59,6 @@ class FaderControl extends St.Widget {
     }
 });
 
-var SlidingControl = GObject.registerClass(
-class SlidingControl extends FaderControl {
-    _init(params) {
-        params = Params.parse(params, { slideDirection: SlideDirection.LEFT });
-
-        this.layout = new SlideLayout();
-        this.layout.slideDirection = params.slideDirection;
-        super._init({
-            layout_manager: this.layout,
-            style_class: 'overview-controls',
-            clip_to_allocation: true,
-        });
-
-        this._visible = true;
-
-        Main.overview.connect('hiding', this._onOverviewHiding.bind(this));
-    }
-
-    _getSlide() {
-        throw new GObject.NotImplementedError('_getSlide in %s'.format(this.constructor.name));
-    }
-
-    _updateSlide() {
-        this.ease_property('@layout.slide-x', this._getSlide(), {
-            mode: Clutter.AnimationMode.EASE_OUT_QUAD,
-            duration: SIDE_CONTROLS_ANIMATION_TIME,
-        });
-    }
-
-    getVisibleWidth() {
-        let child = this.get_first_child();
-        let [, , natWidth] = child.get_preferred_size();
-        return natWidth;
-    }
-
-    _getTranslation() {
-        let child = this.get_first_child();
-        let direction = getRtlSlideDirection(this.layout.slideDirection, child);
-        let visibleWidth = this.getVisibleWidth();
-
-        if (direction == SlideDirection.LEFT)
-            return -visibleWidth;
-        else
-            return visibleWidth;
-    }
-
-    _updateTranslation() {
-        let translationStart = 0;
-        let translationEnd = 0;
-        let translation = this._getTranslation();
-
-        let shouldShow = this._getSlide() > 0;
-        if (shouldShow)
-            translationStart = translation;
-        else
-            translationEnd = translation;
-
-        if (this.translation_x === translationEnd)
-            return;
-
-        this.translation_x = translationStart;
-        this.ease({
-            translation_x: translationEnd,
-            mode: Clutter.AnimationMode.EASE_OUT_QUAD,
-            duration: SIDE_CONTROLS_ANIMATION_TIME,
-        });
-    }
-
-    _onOverviewHiding() {
-        // We need to explicitly slideOut since showing pages
-        // doesn't imply sliding out, instead, hiding the overview does.
-        this.slideOut();
-    }
-
-    _onDragBegin() {
-        super._onDragBegin();
-        this._updateTranslation();
-        this._updateSlide();
-    }
-
-    _onDragEnd() {
-        super._onDragEnd();
-        this._updateSlide();
-    }
-
-    slideIn() {
-        this._visible = true;
-        // we will update slide_x and the translation from pageEmpty
-    }
-
-    slideOut() {
-        this._visible = false;
-        this._updateTranslation();
-        // we will update slide_x from pageEmpty
-    }
-
-    pageEmpty() {
-        // When pageEmpty is received, there's no visible view in the
-        // selector; this means we can now safely set the full slide for
-        // the next page, since slideIn or slideOut might have been called,
-        // changing the visibility
-        this.remove_transition('@layout.slide-x');
-        this.layout.slide_x = this._getSlide();
-        this._updateTranslation();
-    }
-});
-
-var ThumbnailsSlider = GObject.registerClass(
-class ThumbnailsSlider extends SlidingControl {
-    _init(thumbnailsBox) {
-        super._init({ slideDirection: SlideDirection.RIGHT });
-
-        this._thumbnailsBox = thumbnailsBox;
-
-        this.request_mode = Clutter.RequestMode.WIDTH_FOR_HEIGHT;
-        this.reactive = true;
-        this.track_hover = true;
-        this.add_actor(this._thumbnailsBox);
-
-        Main.layoutManager.connect('monitors-changed', this._updateSlide.bind(this));
-        global.workspace_manager.connect('active-workspace-changed',
-                                         this._updateSlide.bind(this));
-        global.workspace_manager.connect('notify::n-workspaces',
-                                         this._updateSlide.bind(this));
-        this.connect('notify::hover', this._updateSlide.bind(this));
-        this._thumbnailsBox.bind_property('visible', this, 'visible', GObject.BindingFlags.SYNC_CREATE);
-    }
-
-    _getAlwaysZoomOut() {
-        // Always show the pager on hover, during a drag, or if workspaces are
-        // actually used, e.g. there are windows on any non-active workspace
-        let workspaceManager = global.workspace_manager;
-        let alwaysZoomOut = this.hover ||
-                            this._inDrag ||
-                            !Meta.prefs_get_dynamic_workspaces() ||
-                            workspaceManager.n_workspaces > 2 ||
-                            workspaceManager.get_active_workspace_index() != 0;
-
-        if (!alwaysZoomOut) {
-            let monitors = Main.layoutManager.monitors;
-            let primary = Main.layoutManager.primaryMonitor;
-
-            /* Look for any monitor to the right of the primary, if there is
-             * one, we always keep zoom out, otherwise its hard to reach
-             * the thumbnail area without passing into the next monitor. */
-            for (let i = 0; i < monitors.length; i++) {
-                if (monitors[i].x >= primary.x + primary.width) {
-                    alwaysZoomOut = true;
-                    break;
-                }
-            }
-        }
-
-        return alwaysZoomOut;
-    }
-
-    getNonExpandedWidth() {
-        let child = this.get_first_child();
-        return child.get_theme_node().get_length('visible-width');
-    }
-
-    _onDragEnd() {
-        this.sync_hover();
-        super._onDragEnd();
-    }
-
-    _getSlide() {
-        if (!this._visible)
-            return 0;
-
-        let alwaysZoomOut = this._getAlwaysZoomOut();
-        if (alwaysZoomOut)
-            return 1;
-
-        let child = this.get_first_child();
-        let preferredHeight = child.get_preferred_height(-1)[1];
-        let expandedWidth = child.get_preferred_width(preferredHeight)[1];
-
-        return this.getNonExpandedWidth() / expandedWidth;
-    }
-
-    getVisibleWidth() {
-        let alwaysZoomOut = this._getAlwaysZoomOut();
-        if (alwaysZoomOut)
-            return super.getVisibleWidth();
-        else
-            return this.getNonExpandedWidth();
-    }
-});
-
 var DashFader = GObject.registerClass(
 class DashFader extends FaderControl {
     _init(dash) {
@@ -391,14 +111,8 @@ class ControlsManager extends St.Widget {
             workspaceManager.connect('notify::n-workspaces',
                 this._updateAdjustment.bind(this));
 
-        this._thumbnailsBox =
-            new WorkspaceThumbnail.ThumbnailsBox(this._workspaceAdjustment);
-        this._thumbnailsSlider = new ThumbnailsSlider(this._thumbnailsBox);
-
         this.viewSelector = new ViewSelector.ViewSelector(searchEntry,
             this._workspaceAdjustment, this.dash.showAppsButton);
-        this.viewSelector.connect('page-changed', this._setVisibility.bind(this));
-        this.viewSelector.connect('page-empty', this._onPageEmpty.bind(this));
 
         this._group = new St.BoxLayout({
             name: 'overview-group',
@@ -413,7 +127,6 @@ class ControlsManager extends St.Widget {
             y_expand: true,
         });
         box.add_child(this.viewSelector);
-        box.add_child(this._thumbnailsSlider);
 
         this._group.add_child(box);
         this._group.add_actor(this._dashFader);
@@ -437,26 +150,4 @@ class ControlsManager extends St.Widget {
         this._workspaceAdjustment.remove_transition('value');
         this._workspaceAdjustment.value = activeIndex;
     }
-
-    _setVisibility() {
-        // Ignore the case when we're leaving the overview, since
-        // actors will be made visible again when entering the overview
-        // next time, and animating them while doing so is just
-        // unnecessary noise
-        if (!Main.overview.visible ||
-            (Main.overview.animationInProgress && !Main.overview.visibleTarget))
-            return;
-
-        let activePage = this.viewSelector.getActivePage();
-        let thumbnailsVisible = activePage == ViewSelector.ViewPage.WINDOWS;
-
-        if (thumbnailsVisible)
-            this._thumbnailsSlider.slideIn();
-        else
-            this._thumbnailsSlider.slideOut();
-    }
-
-    _onPageEmpty() {
-        this._thumbnailsSlider.pageEmpty();
-    }
 });


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]