From 2afd0171a1369d652acaceaeb3572c62b1eda1e3 Mon Sep 17 00:00:00 2001 From: Batalov Sergey Date: Tue, 19 Jul 2016 09:27:58 +0500 Subject: [PATCH 1/2] Scroll toolbox with LEFT/RIGHT in horizontalLayout --- core/toolbox.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/core/toolbox.js b/core/toolbox.js index ac15ed128..ba47a6fe6 100644 --- a/core/toolbox.js +++ b/core/toolbox.js @@ -542,6 +542,7 @@ Blockly.Toolbox.TreeControl.prototype.setSelectedItem = function(node) { Blockly.Toolbox.TreeNode = function(toolbox, html, opt_config, opt_domHelper) { goog.ui.tree.TreeNode.call(this, html, opt_config, opt_domHelper); if (toolbox) { + this.horizontalLayout_ = toolbox.horizontalLayout_; var resize = function() { // Even though the div hasn't changed size, the visible workspace // surface of the workspace has, so we may need to reposition everything. @@ -593,6 +594,28 @@ Blockly.Toolbox.TreeNode.prototype.onDoubleClick_ = function(e) { // NOP. }; +/** + * Remap event.keyCode in horizontalLayout so that arrow + * keys work properly and call original onKeyDown handler. + * @param {!goog.events.BrowserEvent} e The browser event. + * @return {boolean} The handled value. + * @override + * @private + */ +Blockly.Toolbox.TreeNode.prototype.onKeyDown = function(e) { + if (this.horizontalLayout_) { + var map = {}; + map[goog.events.KeyCodes.RIGHT] = goog.events.KeyCodes.DOWN; + map[goog.events.KeyCodes.LEFT] = goog.events.KeyCodes.UP; + map[goog.events.KeyCodes.UP] = goog.events.KeyCodes.LEFT; + map[goog.events.KeyCodes.DOWN] = goog.events.KeyCodes.RIGHT; + + var newKeyCode = map[e.keyCode] + e.keyCode = newKeyCode ? newKeyCode : e.keyCode; + } + return Blockly.Toolbox.TreeNode.superClass_.onKeyDown.call(this, e); +}; + /** * A blank separator node in the tree. * @param {Object=} config The configuration for the tree. See From 34530666fba4092437ad0719c9991ffd27fe8efb Mon Sep 17 00:00:00 2001 From: Batalov Sergey Date: Wed, 20 Jul 2016 08:49:28 +0500 Subject: [PATCH 2/2] Small fixes --- core/toolbox.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/toolbox.js b/core/toolbox.js index ba47a6fe6..4af1b1dd9 100644 --- a/core/toolbox.js +++ b/core/toolbox.js @@ -610,8 +610,8 @@ Blockly.Toolbox.TreeNode.prototype.onKeyDown = function(e) { map[goog.events.KeyCodes.UP] = goog.events.KeyCodes.LEFT; map[goog.events.KeyCodes.DOWN] = goog.events.KeyCodes.RIGHT; - var newKeyCode = map[e.keyCode] - e.keyCode = newKeyCode ? newKeyCode : e.keyCode; + var newKeyCode = map[e.keyCode]; + e.keyCode = newKeyCode || e.keyCode; } return Blockly.Toolbox.TreeNode.superClass_.onKeyDown.call(this, e); };