Define View#isVisible() and use it to only handle key events if the focused view is not hidden.

This commit is contained in:
Jürg Lehni 2011-06-20 22:51:39 +01:00
parent 65bfb091e1
commit 0fecbe50bc
2 changed files with 12 additions and 1 deletions

View file

@ -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]) {

View file

@ -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
*/