Title: [101314] trunk/Source/WebCore
Revision
101314
Author
[email protected]
Date
2011-11-28 18:34:22 -0800 (Mon, 28 Nov 2011)

Log Message

Skip selecting TreeElements that are hidden when keyboard navigating.

We already skipped non-selectable tree elements in the common cases, this just makes selectable
take the hidden flag into account.

Reviewed by Brian Weinstein.

* inspector/front-end/treeoutline.js:
(TreeOutline.prototype._treeKeyDown): Skip non-selectable elements when pressing Left or Right,
similar to what we already do when pressing Up and Down.
(TreeElement): Set _selectable to true.
(TreeElement.prototype.get selectable): Added. Return false when hidden.
(TreeElement.prototype.set selectable): Added. Set _selectable.
(TreeElement.prototype.traverseNextTreeElement): Renamed skipHidden to skipUnrevealed to prevent confusion with
the hidden property of TreeElement.
(TreeElement.prototype.traversePreviousTreeElement): Ditto.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (101313 => 101314)


--- trunk/Source/WebCore/ChangeLog	2011-11-29 02:34:05 UTC (rev 101313)
+++ trunk/Source/WebCore/ChangeLog	2011-11-29 02:34:22 UTC (rev 101314)
@@ -1,5 +1,24 @@
 2011-11-28  Timothy Hatcher  <[email protected]>
 
+        Skip selecting TreeElements that are hidden when keyboard navigating.
+
+        We already skipped non-selectable tree elements in the common cases, this just makes selectable
+        take the hidden flag into account.
+
+        Reviewed by Brian Weinstein.
+
+        * inspector/front-end/treeoutline.js:
+        (TreeOutline.prototype._treeKeyDown): Skip non-selectable elements when pressing Left or Right,
+        similar to what we already do when pressing Up and Down.
+        (TreeElement): Set _selectable to true.
+        (TreeElement.prototype.get selectable): Added. Return false when hidden.
+        (TreeElement.prototype.set selectable): Added. Set _selectable.
+        (TreeElement.prototype.traverseNextTreeElement): Renamed skipHidden to skipUnrevealed to prevent confusion with
+        the hidden property of TreeElement.
+        (TreeElement.prototype.traversePreviousTreeElement): Ditto.
+
+2011-11-28  Timothy Hatcher  <[email protected]>
+
         Use classList instead of addStyleClass and removeStyleClass in TreeOutline.
 
         https://webkit.org/b/72803

Modified: trunk/Source/WebCore/inspector/front-end/treeoutline.js (101313 => 101314)


--- trunk/Source/WebCore/inspector/front-end/treeoutline.js	2011-11-29 02:34:05 UTC (rev 101313)
+++ trunk/Source/WebCore/inspector/front-end/treeoutline.js	2011-11-29 02:34:22 UTC (rev 101314)
@@ -378,6 +378,8 @@
             handled = true;
             if (this.selectedTreeElement.parent.selectable) {
                 nextSelectedElement = this.selectedTreeElement.parent;
+                while (nextSelectedElement && !nextSelectedElement.selectable)
+                    nextSelectedElement = nextSelectedElement.parent;
                 handled = nextSelectedElement ? true : false;
             } else if (this.selectedTreeElement.parent)
                 this.selectedTreeElement.parent.collapse();
@@ -390,6 +392,8 @@
             handled = true;
             if (this.selectedTreeElement.expanded) {
                 nextSelectedElement = this.selectedTreeElement.children[0];
+                while (nextSelectedElement && !nextSelectedElement.selectable)
+                    nextSelectedElement = nextSelectedElement.nextSibling;
                 handled = nextSelectedElement ? true : false;
             } else {
                 if (event.altKey)
@@ -468,6 +472,7 @@
     }
 
     this._hidden = false;
+    this._selectable = true;
     this.expanded = false;
     this.selected = false;
     this.hasChildren = hasChildren;
@@ -480,9 +485,18 @@
 }
 
 TreeElement.prototype = {
-    selectable: true,
     arrowToggleWidth: 10,
 
+    get selectable() {
+        if (this._hidden)
+            return false;
+        return this._selectable;
+    },
+
+    set selectable(x) {
+        this._selectable = x;
+    },
+
     get listItemElement() {
         return this._listItemNode;
     },
@@ -888,13 +902,13 @@
 }
 
 /**
- * @param {boolean} skipHidden
+ * @param {boolean} skipUnrevealed
  * @param {(TreeOutline|TreeElement)=} stayWithin
  * @param {boolean=} dontPopulate
  * @param {Object=} info
  * @return {TreeElement}
  */
-TreeElement.prototype.traverseNextTreeElement = function(skipHidden, stayWithin, dontPopulate, info)
+TreeElement.prototype.traverseNextTreeElement = function(skipUnrevealed, stayWithin, dontPopulate, info)
 {
     if (!dontPopulate && this.hasChildren)
         this.onpopulate();
@@ -902,8 +916,8 @@
     if (info)
         info.depthChange = 0;
 
-    var element = skipHidden ? (this.revealed() ? this.children[0] : null) : this.children[0];
-    if (element && (!skipHidden || (skipHidden && this.expanded))) {
+    var element = skipUnrevealed ? (this.revealed() ? this.children[0] : null) : this.children[0];
+    if (element && (!skipUnrevealed || (skipUnrevealed && this.expanded))) {
         if (info)
             info.depthChange = 1;
         return element;
@@ -912,12 +926,12 @@
     if (this === stayWithin)
         return null;
 
-    element = skipHidden ? (this.revealed() ? this.nextSibling : null) : this.nextSibling;
+    element = skipUnrevealed ? (this.revealed() ? this.nextSibling : null) : this.nextSibling;
     if (element)
         return element;
 
     element = this;
-    while (element && !element.root && !(skipHidden ? (element.revealed() ? element.nextSibling : null) : element.nextSibling) && element.parent !== stayWithin) {
+    while (element && !element.root && !(skipUnrevealed ? (element.revealed() ? element.nextSibling : null) : element.nextSibling) && element.parent !== stayWithin) {
         if (info)
             info.depthChange -= 1;
         element = element.parent;
@@ -926,24 +940,24 @@
     if (!element)
         return null;
 
-    return (skipHidden ? (element.revealed() ? element.nextSibling : null) : element.nextSibling);
+    return (skipUnrevealed ? (element.revealed() ? element.nextSibling : null) : element.nextSibling);
 }
 
 /**
- * @param {boolean} skipHidden
+ * @param {boolean} skipUnrevealed
  * @param {boolean=} dontPopulate
  * @return {TreeElement}
  */
-TreeElement.prototype.traversePreviousTreeElement = function(skipHidden, dontPopulate)
+TreeElement.prototype.traversePreviousTreeElement = function(skipUnrevealed, dontPopulate)
 {
-    var element = skipHidden ? (this.revealed() ? this.previousSibling : null) : this.previousSibling;
+    var element = skipUnrevealed ? (this.revealed() ? this.previousSibling : null) : this.previousSibling;
     if (!dontPopulate && element && element.hasChildren)
         element.onpopulate();
 
-    while (element && (skipHidden ? (element.revealed() && element.expanded ? element.children[element.children.length - 1] : null) : element.children[element.children.length - 1])) {
+    while (element && (skipUnrevealed ? (element.revealed() && element.expanded ? element.children[element.children.length - 1] : null) : element.children[element.children.length - 1])) {
         if (!dontPopulate && element.hasChildren)
             element.onpopulate();
-        element = (skipHidden ? (element.revealed() && element.expanded ? element.children[element.children.length - 1] : null) : element.children[element.children.length - 1]);
+        element = (skipUnrevealed ? (element.revealed() && element.expanded ? element.children[element.children.length - 1] : null) : element.children[element.children.length - 1]);
     }
 
     if (element)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to