Adding single-direction scroll options to inject options (#4651)

* Adding single directions scroll config to inject options
This commit is contained in:
Monica Kozbial
2021-03-03 12:29:10 -08:00
committed by GitHub
parent ef2c6c880f
commit 4844a1038c
3 changed files with 32 additions and 4 deletions

View File

@@ -379,9 +379,14 @@ Blockly.init_ = function(mainWorkspace) {
}
if (options.moveOptions && options.moveOptions.scrollbars) {
var horizontalScroll = options.moveOptions.scrollbars === true ||
!!options.moveOptions.scrollbars.horizontal;
var verticalScroll = options.moveOptions.scrollbars === true ||
!!options.moveOptions.scrollbars.vertical;
mainWorkspace.scrollbar =
new Blockly.ScrollbarPair(
mainWorkspace, true, true, 'blocklyMainWorkspaceScrollbar');
mainWorkspace, horizontalScroll, verticalScroll,
'blocklyMainWorkspaceScrollbar');
mainWorkspace.scrollbar.resize();
} else {
mainWorkspace.setMetrics({x: 0.5, y: 0.5});

View File

@@ -134,7 +134,7 @@ Blockly.Options = function(options) {
/** @type {!Blockly.Options.MoveOptions} */
this.moveOptions = Blockly.Options.parseMoveOptions_(options, hasCategories);
/** @deprecated January 2019 */
this.hasScrollbars = this.moveOptions.scrollbars;
this.hasScrollbars = !!this.moveOptions.scrollbars;
/** @type {boolean} */
this.hasTrashcan = hasTrashcan;
/** @type {number} */
@@ -205,12 +205,21 @@ Blockly.Options.GridOptions;
* Move Options.
* @typedef {{
* drag: boolean,
* scrollbars: boolean,
* scrollbars: (boolean | !Blockly.Options.ScrollbarOptions),
* wheel: boolean
* }}
*/
Blockly.Options.MoveOptions;
/**
* Scrollbar Options.
* @typedef {{
* horizontal: boolean,
* vertical: boolean
* }}
*/
Blockly.Options.ScrollbarOptions;
/**
* Zoom Options.
* @typedef {{
@@ -252,9 +261,23 @@ Blockly.Options.parseMoveOptions_ = function(options, hasCategories) {
var moveOptions = {};
if (move['scrollbars'] === undefined && options['scrollbars'] === undefined) {
moveOptions.scrollbars = hasCategories;
} else if (typeof move['scrollbars'] == 'object') {
moveOptions.scrollbars = {};
moveOptions.scrollbars.horizontal = !!move['scrollbars']['horizontal'];
moveOptions.scrollbars.vertical = !!move['scrollbars']['vertical'];
// Convert scrollbars object to boolean if they have the same value.
// This allows us to easily check for whether any scrollbars exist using
// !!moveOptions.scrollbars.
if (moveOptions.scrollbars.horizontal && moveOptions.scrollbars.vertical) {
moveOptions.scrollbars = true;
} else if (!moveOptions.scrollbars.horizontal &&
!moveOptions.scrollbars.vertical) {
moveOptions.scrollbars = false;
}
} else {
moveOptions.scrollbars = !!move['scrollbars'] || !!options['scrollbars'];
}
if (!moveOptions.scrollbars || move['wheel'] === undefined) {
// Defaults to false so that developers' settings don't appear to change.
moveOptions.wheel = false;

View File

@@ -1659,7 +1659,7 @@ Blockly.WorkspaceSvg.prototype.isDraggable = function() {
* @return {boolean} True if the workspace is movable, false otherwise.
*/
Blockly.WorkspaceSvg.prototype.isMovable = function() {
return (this.options.moveOptions && this.options.moveOptions.scrollbars) ||
return (this.options.moveOptions && !!this.options.moveOptions.scrollbars) ||
(this.options.moveOptions && this.options.moveOptions.wheel) ||
(this.options.moveOptions && this.options.moveOptions.drag) ||
(this.options.zoomOptions && this.options.zoomOptions.wheel) ||