mirror of
https://github.com/google/blockly.git
synced 2026-01-08 17:40:09 +01:00
Merge pull request #1996 from fsih/bugfix/hidden_workspace
Bug fix for keyboard events to headless workspaces and non-main workspaces.
This commit is contained in:
@@ -168,14 +168,19 @@ Blockly.svgResize = function(workspace) {
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle a key-down on SVG drawing surface.
|
||||
* Handle a key-down on SVG drawing surface. Does nothing if the main workspace is not visible.
|
||||
* @param {!Event} e Key down event.
|
||||
* @private
|
||||
*/
|
||||
// TODO (https://github.com/google/blockly/issues/1998) handle cases where there are
|
||||
// multiple workspaces and non-main workspaces are able to accept input.
|
||||
Blockly.onKeyDown_ = function(e) {
|
||||
if (Blockly.mainWorkspace.options.readOnly || Blockly.utils.isTargetInput(e)) {
|
||||
if (Blockly.mainWorkspace.options.readOnly || Blockly.utils.isTargetInput(e)
|
||||
|| (Blockly.mainWorkspace.rendered && !Blockly.mainWorkspace.isVisible())) {
|
||||
// No key actions on readonly workspaces.
|
||||
// When focused on an HTML text input widget, don't trap any keys.
|
||||
// Ignore keypresses on rendered workspaces that have been explicitly
|
||||
// hidden.
|
||||
return;
|
||||
}
|
||||
var deleteBlock = false;
|
||||
|
||||
@@ -131,12 +131,20 @@ Blockly.WorkspaceSvg.prototype.resizeHandlerWrapper_ = null;
|
||||
|
||||
/**
|
||||
* The render status of an SVG workspace.
|
||||
* Returns `true` for visible workspaces and `false` for non-visible,
|
||||
* or headless, workspaces.
|
||||
* Returns `false` for headless workspaces and true for instances of
|
||||
* `Blockly.WorkspaceSvg`.
|
||||
* @type {boolean}
|
||||
*/
|
||||
Blockly.WorkspaceSvg.prototype.rendered = true;
|
||||
|
||||
/**
|
||||
* Whether the workspace is visible. False if the workspace has been hidden
|
||||
* by calling `setVisible(false)`.
|
||||
* @type {boolean}
|
||||
* @private
|
||||
*/
|
||||
Blockly.WorkspaceSvg.prototype.isVisible_ = true;
|
||||
|
||||
/**
|
||||
* Is this workspace the surface for a flyout?
|
||||
* @type {boolean}
|
||||
@@ -334,6 +342,15 @@ Blockly.WorkspaceSvg.prototype.updateInverseScreenCTM = function() {
|
||||
this.inverseScreenCTMDirty_ = true;
|
||||
};
|
||||
|
||||
/**
|
||||
* Getter for isVisible
|
||||
* @return {boolean} Whether the workspace is visible. False if the workspace has been hidden
|
||||
* by calling `setVisible(false)`.
|
||||
*/
|
||||
Blockly.WorkspaceSvg.prototype.isVisible = function() {
|
||||
return this.isVisible_;
|
||||
};
|
||||
|
||||
/**
|
||||
* Return the absolute coordinates of the top-left corner of this element,
|
||||
* scales that after canvas SVG element, if it's a descendant.
|
||||
@@ -882,6 +899,7 @@ Blockly.WorkspaceSvg.prototype.setVisible = function(isVisible) {
|
||||
} else {
|
||||
Blockly.hideChaff(true);
|
||||
}
|
||||
this.isVisible_ = isVisible;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user