[gnome-shell/wip/sass] windowManager: Implement the resize popup here



commit f8abd16d3c496b7fe1668e17be69c826143d6024
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Mon Dec 29 17:30:38 2014 -0800

    windowManager: Implement the resize popup here
    
    mutter recently removed its implementation, so add a simple one here.

 js/ui/windowManager.js |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index b8af0e0..56f33a5 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -580,6 +580,35 @@ const AppSwitchAction = new Lang.Class({
 });
 Signals.addSignalMethods(AppSwitchAction.prototype);
 
+const ResizePopup = new Lang.Class({
+    Name: 'ResizePopup',
+
+    _init: function() {
+        this._widget = new St.Widget({ layout_manager: new Clutter.BinLayout() });
+        this._label = new St.Label({ style_class: 'resize-popup',
+                                     x_align: Clutter.ActorAlign.CENTER,
+                                     y_align: Clutter.ActorAlign.CENTER,
+                                     x_expand: true, y_expand: true });
+        this._widget.add_child(this._label);
+        Main.uiGroup.add_actor(this._widget);
+    },
+
+    set: function(rect, displayW, displayH) {
+        /* Translators: This represents the size of a window. The first number is
+         * the width of the window and the second is the height. */
+        let text = _("%d x %d").format(displayW, displayH);
+        this._label.set_text(text);
+
+        this._widget.set_position(rect.x, rect.y);
+        this._widget.set_size(rect.width, rect.height);
+    },
+
+    destroy: function() {
+        this._widget.destroy();
+        this._widget = null;
+    },
+});
+
 const WindowManager = new Lang.Class({
     Name: 'WindowManager',
 
@@ -792,6 +821,8 @@ const WindowManager = new Lang.Class({
                            Shell.ActionMode.TOPBAR_POPUP,
                            Lang.bind(this, this._toggleAppMenu));
 
+        global.display.connect('show-resize-popup', Lang.bind(this, this._showResizePopup));
+
         Main.overview.connect('showing', Lang.bind(this, function() {
             for (let i = 0; i < this._dimmedWindows.length; i++)
                 this._undimWindow(this._dimmedWindows[i]);
@@ -1522,4 +1553,16 @@ const WindowManager = new Lang.Class({
         let dialog = new DisplayChangeDialog(this._shellwm);
         dialog.open();
     },
+
+    _showResizePopup: function(display, show, rect, displayW, displayH) {
+        if (show) {
+            if (!this._resizePopup)
+                this._resizePopup = new ResizePopup();
+
+            this._resizePopup.set(rect, displayW, displayH);
+        } else {
+            if (this._resizePopup)
+                this._resizePopup.destroy();
+        }
+    },
 });


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