[gnome-shell-extensions] dock: Added hide-effect 'move'.



commit c6624e84b366932e40448d45457e6e691b5f1be1
Author: Stefan 'psYchotic' Zwanenburg <stefanhetzwaantje gmail com>
Date:   Fri Oct 21 18:37:28 2011 +0200

    dock: Added hide-effect 'move'.
    
    This new hide-effect simply moves everything but 1*_spacing offscreen.
    It's fairly similar to the 'rescale' effect.

 extensions/dock/extension.js                       |   88 +++++++++++++++++++-
 .../org.gnome.shell.extensions.dock.gschema.xml.in |    5 +-
 2 files changed, 90 insertions(+), 3 deletions(-)
---
diff --git a/extensions/dock/extension.js b/extensions/dock/extension.js
index 968721c..838d7b2 100644
--- a/extensions/dock/extension.js
+++ b/extensions/dock/extension.js
@@ -45,7 +45,8 @@ const PositionMode = {
 
 const AutoHideEffect = {
     RESIZE: 0,
-    RESCALE: 1
+    RESCALE: 1,
+    MOVE: 2
 };
 
 let position = PositionMode.RIGHT;
@@ -250,6 +251,82 @@ function showEffectAddItem_scale () {
         });
 }
 
+/**************************************************************************************/
+/**** start move Dock functions                                       *****************/
+/**************************************************************************************/
+function hideDock_move () {
+       this._item_size = dockicon_size;
+       let monitor = Main.layoutManager.primaryMonitor;
+       let cornerX = 0;
+       let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
+       let width = this._item_size + 4*this._spacing;
+
+       switch (position) {
+            case PositionMode.LEFT:
+                cornerX= monitor.x - width + this._spacing;
+                break;
+            case PositionMode.RIGHT:
+            default:
+                cornerX = monitor.x + monitor.width - this._spacing;
+        }
+
+        if (hideable) {
+               Tweener.addTween(this.actor,{
+                       x: cornerX,
+                       y: monitor.y + (monitor.height - height)/2,
+                       width: width,
+                       height: height,
+                       time: autohide_animation_time,
+                       transition: 'easeOutQuad'
+                     });
+               hideDock=true;
+        }
+}
+
+function showDock_move () {
+        this._item_size = dockicon_size;
+        let monitor = Main.layoutManager.primaryMonitor;
+        let position_x = monitor.x;
+        let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
+        let width = this._item_size + 4*this._spacing;
+
+        switch (position) {
+            case PositionMode.LEFT:
+                position_x=monitor.x - 2*this._spacing;
+                break;
+            case PositionMode.RIGHT:
+            default:
+                 position_x=monitor.x + (monitor.width-this._item_size-2*this._spacing);
+        }
+        Tweener.addTween(this.actor, {
+                x: position_x,
+                y: monitor.y + (monitor.height - height)/2,
+                width: width,
+                height: height,
+                time: autohide_animation_time,
+                transition: 'easeOutQuad'
+        });
+        hideDock=false;
+}
+
+function initShowDock_move () {
+    this._showDock();
+}
+
+function showEffectAddItem_move () {
+        let monitor = Main.layoutManager.primaryMonitor;
+        let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
+        let width = this._item_size + 4*this._spacing;
+
+        Tweener.addTween(this.actor, {
+                y: monitor.y + (monitor.height-height)/2,
+                height: height,
+                width: width,
+                time: autohide_animation_time,
+                transition: 'easeOutQuad'
+        });
+}
+
 function Dock() {
     this._init();
 }
@@ -350,6 +427,9 @@ Dock.prototype = {
                            break;
                         case AutoHideEffect.RESIZE:
                            this.actor.set_scale (1,1);
+                           break;
+                        case AutoHideEffect.MOVE:
+                           ;
                 }
                 this.actor.disconnect(this._leave_event);
                 this.actor.disconnect(this._enter_event);
@@ -425,6 +505,12 @@ Dock.prototype = {
             this._initShowDock = initShowDock_scale;
             this._showEffectAddItem = showEffectAddItem_scale;
             break;
+        case AutoHideEffect.MOVE:
+            this._hideDock = hideDock_move;
+            this._showDock = showDock_move;
+            this._initShowDock = initShowDock_move;
+            this._showEffectAddItem = showEffectAddItem_move;
+            break;
         case AutoHideEffect.RESIZE:
         default:
             this._hideDock = hideDock_size;
diff --git a/extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in b/extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in
index 42fce8b..351c9a7 100644
--- a/extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in
+++ b/extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in
@@ -3,9 +3,10 @@
     <value nick='left' value='0'/>
     <value nick='right' value='1'/>
   </enum>
-  <enum id='org.gnome.shell.extensions.dock.AutoHideEfect'>
+  <enum id='org.gnome.shell.extensions.dock.AutoHideEffect'>
     <value nick='resize' value='0'/>
     <value nick='rescale' value='1'/>
+    <value nick='move' value='2'/>
   </enum>
 
   <schema id="org.gnome.shell.extensions.dock" path="/org/gnome/shell/extensions/dock/">
@@ -23,7 +24,7 @@
       <default>true</default>
       <_summary>Enable/disable autohide</_summary>
     </key>
-    <key name="hide-effect" enum="org.gnome.shell.extensions.dock.AutoHideEfect">
+    <key name="hide-effect" enum="org.gnome.shell.extensions.dock.AutoHideEffect">
       <default>'resize'</default>
       <_summary>Autohide effect</_summary>
       <_description>Sets the effect of the hide dock. Allowed values are 'resize' or 'rescale'</_description>



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