diff --git a/src/ol/interaction/condition.exports b/src/ol/interaction/condition.exports index d9a0595be0..7d5694ec70 100644 --- a/src/ol/interaction/condition.exports +++ b/src/ol/interaction/condition.exports @@ -4,3 +4,4 @@ @exportSymbol ol.interaction.condition.noModifierKeys @exportSymbol ol.interaction.condition.platformModifierKeyOnly @exportSymbol ol.interaction.condition.shiftKeyOnly +@exportSymbol ol.interaction.condition.targetNotEditable diff --git a/src/ol/interaction/condition.js b/src/ol/interaction/condition.js index c0831f38ec..78719a8c89 100644 --- a/src/ol/interaction/condition.js +++ b/src/ol/interaction/condition.js @@ -1,6 +1,7 @@ goog.provide('ol.interaction.ConditionType'); goog.provide('ol.interaction.condition'); +goog.require('goog.dom.TagName'); goog.require('goog.functions'); @@ -75,3 +76,16 @@ ol.interaction.condition.shiftKeyOnly = function(browserEvent) { !browserEvent.platformModifierKey && 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); +}; diff --git a/src/ol/interaction/keyboardpaninteraction.js b/src/ol/interaction/keyboardpaninteraction.js index b52c7108a3..58693b63c5 100644 --- a/src/ol/interaction/keyboardpaninteraction.js +++ b/src/ol/interaction/keyboardpaninteraction.js @@ -5,6 +5,7 @@ goog.provide('ol.interaction.KeyboardPan'); goog.require('goog.asserts'); goog.require('goog.events.KeyCodes'); goog.require('goog.events.KeyHandler.EventType'); +goog.require('goog.functions'); goog.require('ol.View2D'); goog.require('ol.coordinate'); goog.require('ol.interaction.ConditionType'); @@ -34,8 +35,9 @@ ol.interaction.KeyboardPan = function(opt_options) { * @private * @type {ol.interaction.ConditionType} */ - this.condition_ = goog.isDef(options.condition) ? - options.condition : ol.interaction.condition.noModifierKeys; + this.condition_ = goog.isDef(options.condition) ? options.condition : + goog.functions.and(ol.interaction.condition.noModifierKeys, + ol.interaction.condition.targetNotEditable); /** * @private diff --git a/src/ol/interaction/keyboardzoominteraction.js b/src/ol/interaction/keyboardzoominteraction.js index f7b193179d..2702da8a8d 100644 --- a/src/ol/interaction/keyboardzoominteraction.js +++ b/src/ol/interaction/keyboardzoominteraction.js @@ -4,6 +4,7 @@ goog.provide('ol.interaction.KeyboardZoom'); goog.require('goog.asserts'); goog.require('goog.events.KeyHandler.EventType'); +goog.require('goog.functions'); goog.require('ol.interaction.ConditionType'); goog.require('ol.interaction.Interaction'); goog.require('ol.interaction.condition'); @@ -31,8 +32,9 @@ ol.interaction.KeyboardZoom = function(opt_options) { * @private * @type {ol.interaction.ConditionType} */ - this.condition_ = goog.isDef(options.condition) ? - options.condition : ol.interaction.condition.noModifierKeys; + this.condition_ = goog.isDef(options.condition) ? options.condition : + goog.functions.and(ol.interaction.condition.noModifierKeys, + ol.interaction.condition.targetNotEditable); /** * @private