+2007-04-22 Timothy Hatcher <timothy@apple.com>
+
+ Reviewed by Mitz.
+
+ Bug 13436: Make Option-clicking a disclosure triangle expand the entire subtree
+ http://bugs.webkit.org/show_bug.cgi?id=13436
+
+ Makes option-click recursively expand and collapse the sub-tree. Pressing option-left
+ and -right also recursively expands and collapses the sub-tree.
+
+ * WebInspector/webInspector/treeoutline.js:
+
2007-04-22 Timothy Hatcher <timothy@apple.com>
Reviewed by Mitz.
TreeOutline.prototype.handleKeyEvent = function(event)
{
- if (!this.selectedTreeElement || event.shiftKey || event.metaKey || event.altKey || event.ctrlKey)
+ if (!this.selectedTreeElement || event.shiftKey || event.metaKey || event.ctrlKey)
return;
var handled = false;
var nextSelectedElement;
- if (event.keyIdentifier === "Up") {
+ if (event.keyIdentifier === "Up" && !event.altKey) {
nextSelectedElement = this.selectedTreeElement.traversePreviousTreeElement(true);
handled = true;
- } else if (event.keyIdentifier === "Down") {
+ } else if (event.keyIdentifier === "Down" && !event.altKey) {
nextSelectedElement = this.selectedTreeElement.traverseNextTreeElement(true);
handled = true;
} else if (event.keyIdentifier === "Left") {
if (this.selectedTreeElement.expanded) {
- this.selectedTreeElement.collapse();
+ if (event.altKey)
+ this.selectedTreeElement.collapseRecursively();
+ else
+ this.selectedTreeElement.collapse();
handled = true;
} else if (this.selectedTreeElement.parent && !this.selectedTreeElement.parent.root) {
nextSelectedElement = this.selectedTreeElement.parent;
}
} else if (event.keyIdentifier === "Right") {
if (this.selectedTreeElement.hasChildren) {
- this.selectedTreeElement.expand();
+ if (event.altKey)
+ this.selectedTreeElement.expandRecursively();
+ else
+ this.selectedTreeElement.expand();
handled = true;
}
}
if (event.offsetX <= 20 && element.treeElement.hasChildren) {
if (element.treeElement.expanded) {
- element.treeElement.collapse();
+ if (event.altKey)
+ element.treeElement.collapseRecursively();
+ else
+ element.treeElement.collapse();
} else {
- element.treeElement.expand();
+ if (event.altKey)
+ element.treeElement.expandRecursively();
+ else
+ element.treeElement.expand();
}
}
}
this.oncollapse(this);
}
+TreeElement.prototype.collapseRecursively = function()
+{
+ var item = this;
+ while (item) {
+ if (item.expanded)
+ item.collapse();
+ item = item.traverseNextTreeElement(false, this, true);
+ }
+}
+
TreeElement.prototype.expand = function()
{
if (!this.hasChildren || (this.expanded && !this.refreshChildren && this._childrenListNode))
this.onexpand(this);
}
+TreeElement.prototype.expandRecursively = function()
+{
+ var item = this;
+ while (item) {
+ item.expand();
+ item = item.traverseNextTreeElement(false, this);
+ }
+}
+
TreeElement.prototype.reveal = function()
{
var currentAncestor = this.parent;