Don't react to keyboard events when the focus is on editable inputs

This commit is contained in:
Frederic Junod
2013-08-19 09:29:09 +02:00
parent 554a725d1a
commit 9e8d559c1b
4 changed files with 23 additions and 4 deletions

View File

@@ -4,3 +4,4 @@
@exportSymbol ol.interaction.condition.noModifierKeys @exportSymbol ol.interaction.condition.noModifierKeys
@exportSymbol ol.interaction.condition.platformModifierKeyOnly @exportSymbol ol.interaction.condition.platformModifierKeyOnly
@exportSymbol ol.interaction.condition.shiftKeyOnly @exportSymbol ol.interaction.condition.shiftKeyOnly
@exportSymbol ol.interaction.condition.targetNotEditable

View File

@@ -1,6 +1,7 @@
goog.provide('ol.interaction.ConditionType'); goog.provide('ol.interaction.ConditionType');
goog.provide('ol.interaction.condition'); goog.provide('ol.interaction.condition');
goog.require('goog.dom.TagName');
goog.require('goog.functions'); goog.require('goog.functions');
@@ -75,3 +76,16 @@ ol.interaction.condition.shiftKeyOnly = function(browserEvent) {
!browserEvent.platformModifierKey && !browserEvent.platformModifierKey &&
browserEvent.shiftKey); browserEvent.shiftKey);
}; };
/**
* @param {goog.events.BrowserEvent} browserEvent Browser event.
* @return {boolean} True if the target element is not editable.
*/
ol.interaction.condition.targetNotEditable = function(browserEvent) {
var tagName = browserEvent.target.tagName;
return (
tagName !== goog.dom.TagName.INPUT &&
tagName !== goog.dom.TagName.SELECT &&
tagName !== goog.dom.TagName.TEXTAREA);
};

View File

@@ -5,6 +5,7 @@ goog.provide('ol.interaction.KeyboardPan');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.events.KeyCodes'); goog.require('goog.events.KeyCodes');
goog.require('goog.events.KeyHandler.EventType'); goog.require('goog.events.KeyHandler.EventType');
goog.require('goog.functions');
goog.require('ol.View2D'); goog.require('ol.View2D');
goog.require('ol.coordinate'); goog.require('ol.coordinate');
goog.require('ol.interaction.ConditionType'); goog.require('ol.interaction.ConditionType');
@@ -34,8 +35,9 @@ ol.interaction.KeyboardPan = function(opt_options) {
* @private * @private
* @type {ol.interaction.ConditionType} * @type {ol.interaction.ConditionType}
*/ */
this.condition_ = goog.isDef(options.condition) ? this.condition_ = goog.isDef(options.condition) ? options.condition :
options.condition : ol.interaction.condition.noModifierKeys; goog.functions.and(ol.interaction.condition.noModifierKeys,
ol.interaction.condition.targetNotEditable);
/** /**
* @private * @private

View File

@@ -4,6 +4,7 @@ goog.provide('ol.interaction.KeyboardZoom');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.events.KeyHandler.EventType'); goog.require('goog.events.KeyHandler.EventType');
goog.require('goog.functions');
goog.require('ol.interaction.ConditionType'); goog.require('ol.interaction.ConditionType');
goog.require('ol.interaction.Interaction'); goog.require('ol.interaction.Interaction');
goog.require('ol.interaction.condition'); goog.require('ol.interaction.condition');
@@ -31,8 +32,9 @@ ol.interaction.KeyboardZoom = function(opt_options) {
* @private * @private
* @type {ol.interaction.ConditionType} * @type {ol.interaction.ConditionType}
*/ */
this.condition_ = goog.isDef(options.condition) ? this.condition_ = goog.isDef(options.condition) ? options.condition :
options.condition : ol.interaction.condition.noModifierKeys; goog.functions.and(ol.interaction.condition.noModifierKeys,
ol.interaction.condition.targetNotEditable);
/** /**
* @private * @private