[gnome-shell/wip/paging-release2: 1/15] iconGrid: Split out _calculateChildBox



commit 438fc170f4fbb170efbdd4e4d66f47f5c5a4cd95
Author: Carlos Soriano <carlos soriano89 gmail com>
Date:   Wed Aug 21 19:16:58 2013 +0200

    iconGrid: Split out _calculateChildBox
    
    Split out the calculation of the child box in allocation function
    to be reusable by subclasses and let the code more modular

 js/ui/iconGrid.js |   41 ++++++++++++++++++++++++-----------------
 1 files changed, 24 insertions(+), 17 deletions(-)
---
diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js
index 416e659..be47a5b 100644
--- a/js/ui/iconGrid.js
+++ b/js/ui/iconGrid.js
@@ -285,23 +285,7 @@ const IconGrid = new Lang.Class({
         for (let i = 0; i < children.length; i++) {
             let [childMinWidth, childMinHeight, childNaturalWidth, childNaturalHeight]
                 = children[i].get_preferred_size();
-
-            /* Center the item in its allocation horizontally */
-            let width = Math.min(this._hItemSize, childNaturalWidth);
-            let childXSpacing = Math.max(0, width - childNaturalWidth) / 2;
-            let height = Math.min(this._vItemSize, childNaturalHeight);
-            let childYSpacing = Math.max(0, height - childNaturalHeight) / 2;
-
-            let childBox = new Clutter.ActorBox();
-            if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
-                let _x = box.x2 - (x + width);
-                childBox.x1 = Math.floor(_x - childXSpacing);
-            } else {
-                childBox.x1 = Math.floor(x + childXSpacing);
-            }
-            childBox.y1 = Math.floor(y + childYSpacing);
-            childBox.x2 = childBox.x1 + width;
-            childBox.y2 = childBox.y1 + height;
+            let childBox = this._calculateChildBox(children[i], x, y, box);
 
             if (this._rowLimit && rowIndex >= this._rowLimit ||
                 this._fillParent && childBox.y2 > availHeight) {
@@ -326,6 +310,29 @@ const IconGrid = new Lang.Class({
         }
     },
 
+    _calculateChildBox: function(child, x, y, box) {
+        let [childMinWidth, childMinHeight, childNaturalWidth, childNaturalHeight] =
+             child.get_preferred_size();
+
+        /* Center the item in its allocation horizontally */
+        let width = Math.min(this._hItemSize, childNaturalWidth);
+        let childXSpacing = Math.max(0, width - childNaturalWidth) / 2;
+        let height = Math.min(this._vItemSize, childNaturalHeight);
+        let childYSpacing = Math.max(0, height - childNaturalHeight) / 2;
+
+        let childBox = new Clutter.ActorBox();
+        if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
+            let _x = box.x2 - (x + width);
+            childBox.x1 = Math.floor(_x - childXSpacing);
+        } else {
+            childBox.x1 = Math.floor(x + childXSpacing);
+        }
+        childBox.y1 = Math.floor(y + childYSpacing);
+        childBox.x2 = childBox.x1 + width;
+        childBox.y2 = childBox.y1 + height;
+        return childBox;
+    },
+
     childrenInRow: function(rowWidth) {
         return this._computeLayout(rowWidth)[0];
     },


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