[gnome-shell] layout: Ensure that the hotCorners array is always indexable by monitor number



commit 64ecfa49eb50ace6052d98afa34d86402df54f5a
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Tue Mar 19 15:50:16 2013 -0400

    layout: Ensure that the hotCorners array is always indexable by monitor number
    
    messageTray relies on indexing the hot corners array by monitor number,
    so we should make this a guarantee.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=698513

 js/ui/layout.js |   26 +++++++++++++++-----------
 1 files changed, 15 insertions(+), 11 deletions(-)
---
diff --git a/js/ui/layout.js b/js/ui/layout.js
index ebc9a1d..a7356a0 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -283,8 +283,10 @@ const LayoutManager = new Lang.Class({
 
     _updateHotCorners: function() {
         // destroy old hot corners
-        for (let i = 0; i < this.hotCorners.length; i++)
-            this.hotCorners[i].destroy();
+        this.hotCorners.forEach(function(corner) {
+            if (corner)
+                corner.destroy();
+        });
         this.hotCorners = [];
 
         let size = this.panelBox.height;
@@ -295,9 +297,9 @@ const LayoutManager = new Lang.Class({
             let cornerX = this._rtl ? monitor.x + monitor.width : monitor.x;
             let cornerY = monitor.y;
 
-            if (i != this.primaryIndex) {
-                let haveTopLeftCorner = true;
+            let haveTopLeftCorner = true;
 
+            if (i != this.primaryIndex) {
                 // Check if we have a top left (right for RTL) corner.
                 // I.e. if there is no monitor directly above or to the left(right)
                 let besideX = this._rtl ? monitor.x + 1 : cornerX - 1;
@@ -324,14 +326,15 @@ const LayoutManager = new Lang.Class({
                         break;
                     }
                 }
-
-                if (!haveTopLeftCorner)
-                    continue;
             }
 
-            let corner = new HotCorner(this, monitor, cornerX, cornerY);
-            corner.setBarrierSize(size);
-            this.hotCorners.push(corner);
+            if (haveTopLeftCorner) {
+                let corner = new HotCorner(this, monitor, cornerX, cornerY);
+                corner.setBarrierSize(size);
+                this.hotCorners.push(corner);
+            } else {
+                this.hotCorners.push(null);
+            }
         }
 
         this.emit('hot-corners-changed');
@@ -408,7 +411,8 @@ const LayoutManager = new Lang.Class({
 
         let size = this.panelBox.height;
         this.hotCorners.forEach(function(corner) {
-            corner.setBarrierSize(size);
+            if (corner)
+                corner.setBarrierSize(size);
         });
     },
 


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