diff --git a/src/ui/Key.js b/src/ui/Key.js index 858ca537..33d85cf6 100644 --- a/src/ui/Key.js +++ b/src/ui/Key.js @@ -70,7 +70,7 @@ var Key = this.Key = new function() { key = keys[keyCode] || character.toLowerCase(), handler = down ? 'onKeyDown' : 'onKeyUp', view = View.focused, - scope = view && view._scope, + scope = view && view.isVisible() && view._scope, tool = scope && scope.tool; keyMap[key] = down; if (tool && tool[handler]) { diff --git a/src/ui/View.js b/src/ui/View.js index 35a391f5..0e13b915 100644 --- a/src/ui/View.js +++ b/src/ui/View.js @@ -193,6 +193,17 @@ var View = this.View = Base.extend({ this._zoom = zoom; }, + /** + * Checks whether the view is currently visible within the current browser + * viewport. + * + * @return {Boolean} Whether the view is visible. + */ + isVisible: function() { + // TODO: Take bounds into account if it's not the full canvas? + return DomElement.isVisible(this._canvas); + }, + /** * @param {Point} point */