diff --git a/toolkit/content/widgets/tree.xml b/toolkit/content/widgets/tree.xml index bacea636db..ec88a1e09d 100644 --- a/toolkit/content/widgets/tree.xml +++ b/toolkit/content/widgets/tree.xml @@ -737,6 +737,7 @@ 0) { this.currentIndex = this.treeBoxObject.getFirstVisibleRow(); } @@ -778,7 +780,7 @@ 0 && - !event.altKey && !this._isAccelPressed(event) && - !event.metaKey && !event.ctrlKey) { - var l = this._keyNavigate(event); - if (l >= 0) { - this.view.selection.timedSelect(l, this._selectDelay); - this.treeBoxObject.ensureRowIsVisible(l); - } - event.preventDefault(); - } - ]]> + if (event.charCode == ' '.charCodeAt(0)) { + var c = this.currentIndex; + if (!this.view.selection.isSelected(c) || + (!this.view.selection.single && this._isAccelPressed(event))) { + this.view.selection.toggleSelect(c); + event.preventDefault(); + } + } + else if (!this.disableKeyNavigation && event.charCode > 0 && + !event.altKey && !this._isAccelPressed(event) && + !event.metaKey && !event.ctrlKey) { + var l = this._keyNavigate(event); + if (l >= 0) { + this.view.selection.timedSelect(l, this._selectDelay); + this.treeBoxObject.ensureRowIsVisible(l); + } + event.preventDefault(); + } + ]]> @@ -1558,4 +1560,4 @@ - + \ No newline at end of file