Commit Graph

139 Commits

Author SHA1 Message Date
tsauerwein
7fbd11154b refactoring, type annotations 2014-03-14 10:16:26 +01:00
tsauerwein
d772c95ccf makes PointerEvent a plain closure class, instead of trying to mimic a mouse event, which was required for the polyfill 2014-03-14 10:16:25 +01:00
tsauerwein
a31cc3f18c only track events when "pointerdown" event was received, because on native android browser wrong move events are sent with no "pointerdown" event 2014-03-14 10:16:25 +01:00
tsauerwein
c4c1eb7d45 allow dragging for mouse/ms/native when pointer is outside map viewport element 2014-03-14 10:16:25 +01:00
tsauerwein
1c75ecc260 former touch interactions now use pointer events 2014-03-14 10:16:25 +01:00
tsauerwein
014ef96c31 base interactions for pointer events on existing touch interactions 2014-03-14 10:16:25 +01:00
tsauerwein
df4bd7c43b source for ms pointer events (IE10) 2014-03-14 10:16:25 +01:00
tsauerwein
7140f608f8 pointer events generated by mouse events 2014-03-14 10:16:25 +01:00
Tom Payne
022a7a03e0 Use oli.FrameState instead of ol.FrameState 2014-03-10 14:48:23 +01:00
Austin Hyde
298674d14f Only do the IE-safe event cloning in legacy IE 2014-02-05 10:32:14 -05:00
Austin Hyde
9ffed5bf5f Add a compile-time flag to enable legacy IE support 2014-02-05 10:32:14 -05:00
Austin Hyde
74a9a155b1 Dispose of the IE dblclick listener, add goog.require 2014-02-05 10:32:14 -05:00
Austin Hyde
c9ca219286 Fix the root cause of the IE mouseup event bug.
When the event object is reference outside the call stack of the
original event handler (like in a setTimeout), accessing its
properties results in a "member not found" error. The solution is to
clone the event object and use the clone.
2014-02-05 10:32:14 -05:00
Tom Payne
318fc68159 Convert ol.MapBrowserEvent#get* methods into properties 2014-01-29 14:51:27 +01:00
Frederic Junod
80cae77161 Add 'const' annotation to ol.MapBrowserEvent.browserEvent 2014-01-09 10:32:30 +01:00
Éric Lemoine
0e75e971d9 Conditionally deregister touchend listener 2013-12-18 15:55:11 +01:00
Éric Lemoine
3877f87a26 Add ol.MapBrowserEvent#getBrowserEvent 2013-12-09 12:29:05 +01:00
oterral
22ac512507 Fix map navigation on android native browsers 2013-11-29 09:06:19 +01:00
Tim Schaub
85500fb616 Merge pull request #1252 from tschaub/expose-down
Add a getter for the most recent down event.
2013-11-11 11:27:19 -08:00
Olivier Terral
67d3b4527a Modify comments 2013-11-08 17:15:58 +01:00
Olivier Terral
726a04ce3e Forbid right click to trigger singleclick events on IE10 2013-11-08 13:30:58 +01:00
Olivier Terral
d0b0d0470b Fix singleclick and doubleclick on windows Surface 2013-11-08 13:30:58 +01:00
Tim Schaub
22fb418236 Provide a method to get the most recent down type event
This will allow interactions to conditionally handle later events based on the down event.
2013-11-07 11:21:01 -07:00
Tim Schaub
812cb7fb12 Leave the down_ event set
The other "up" type listeners (for touch and pointer) do not set this to null.  This event can be of use to a click listener that might want to compare the down position to the click event's position.
2013-11-07 11:02:04 -07:00
Tim Schaub
d5d005ba3f Allow interactions to deal directly with browser events
The relayEvent_ method wraps goog's browser events in our MapBrowserEvent.  This allows interactions to deal with real browser events in addition to our emulated events.
2013-11-01 13:07:44 -06:00
Éric Lemoine
d81fe5ac95 Map browser event handler refactoring
This commit refactors the code of the map browser event handler. The changes are the following:

Previously the `handleTouch*_` listener functions handled both `touch*` and `mspointer*` events. With this commit we use per-event type listeners. This duplicates some code (could be avoidable), but makes it easier to introduce mouse/touch/pointer specific treatments in the future.

We now listen to pointermove, pointerup, touchmove and touchend only when needed. In this way we're assured that a `down` event was received (and that `this.down_` is set) when the `up` or `move` listeners are called. This fixes the bug @oterral reported on the mailing list: https://groups.google.com/d/msg/ol3-dev/jR844F7Nlg8/eN9dt4uATK0J.

To avoid problems in browsers that trigger different types of events (e.g. both mouse and pointer events) the `down` listeners unregister the other `down` listeners. For example, the `pointerdown` listener unregisters the `mousedown` and `touchstart` listeners, for ever.
2013-10-31 13:35:01 +01:00
Éric Lemoine
8402eee0c3 Map "click" event renamed to "singleclick"
As discussed with @tschaub in #1195.
2013-10-31 09:37:16 +01:00
Éric Lemoine
0fa66cc7e7 Remove mousedown listener on first touchstart 2013-10-30 13:16:09 +01:00
Éric Lemoine
9f7ead5ef4 Remove unused ol.MapBrowserEventHandler#relayEvent_ func 2013-10-30 13:16:09 +01:00
Éric Lemoine
a85b82090d Emulate click events only on mouse "action"
`click` events are fired only if the mouse action button is pressed. This prevents `click` events from being fired when the middle mouse button is used.

Also, without this commit, in Chrome with emulated touch events enabled, double-clicking the map doesn't zoom the map. This is because `ol.BrowserFeature.HAS_TOUCH` is `false` in that environment. The commit fixes it by testing `isMouseActionButton` on mouse devices only.
2013-10-30 13:16:09 +01:00
Éric Lemoine
0c212fdcb5 Emulated click events on mouse devices
The map already emits emulated `click` and `dblclick` events on touch and pointer devices. With this commit the map emits emulated `click` and `dblclick` events on mouse devices as well.
2013-10-30 13:16:09 +01:00
Paul Spencer
bada596b45 Add default stability level to docs of exported things. 2013-10-24 18:20:24 -04:00
Éric Lemoine
08bad9746b Do not relay mouseout events 2013-10-18 10:00:53 +02:00
Éric Lemoine
70eb5a5f13 Emulate click and dblclick on touch devices 2013-10-18 09:59:47 +02:00
Éric Lemoine
938f45a032 Do not relay mousemove events 2013-10-18 09:59:46 +02:00
Éric Lemoine
1c051aa055 Do not relay contextmenu events 2013-10-18 09:59:46 +02:00
Éric Lemoine
4c04c9fa5c Use getCoordinatePixel in ol.MapBrowserEvent 2013-10-14 15:36:46 +02:00
Éric Lemoine
49e0af5abb Use getEventPixel in ol.MapBrowserEvent 2013-10-14 15:36:37 +02:00
Frederic Junod
f994c4f8a1 Only dispatch touchmove events after a touchstart 2013-09-03 09:35:30 +02:00
Frederic Junod
2b5e0c2c31 Change touchmove and touchstart listened element to 'document'
As for the mouse events, this allows to drag, zoom or rotate the map
with pointer(s) who moved outside of the viewport.
2013-09-03 09:35:30 +02:00
Frederic Junod
ecf953a125 Remove pressed_ variable and rely on down_ to check if a mouse button is pressed 2013-08-28 11:28:50 +02:00
Frederic Junod
dc5b209f7f Change previous_ local variable type to boolean
And rename it to pressed_ for clarity; the variable represents whether
the mouse button is pressed
2013-08-28 11:16:45 +02:00
Frederic Junod
9306704c1d Add documentation in mapbrowserevent.js 2013-08-28 11:16:44 +02:00
Frederic Junod
d43581719b IE pointer events names are now defined in goog.events.EventType 2013-07-23 08:50:57 +02:00
Éric Lemoine
6fc4aa68b6 Remove ol.MapBrowserEvent#stopOtherInteractions
and check for false/true in the return from handleMapBrowserEvent. Refs #791.
2013-06-27 14:43:00 +02:00
ahocevar
a405279f34 Click handler called with empty event object on Android
On Android (both native browser and Chrome), the handleTouchEnd_
method is sometimes reached in a state where this.down_ is null.
This check protects against this.click_ being called without
an event object. To see this issue, open any example in Android,
and tap the zoom + or - button.
2013-06-24 10:35:02 +02:00
Frederic Junod
fd5f4f3dd8 API doc strings for preventDefault and stopPropagation
thanks @elemoine
2013-06-18 15:02:42 +02:00
Frederic Junod
bed44dd82c Add ol.MapBrowserEvent.stopOtherInteractions
When called, stops the interaction chain.
2013-06-18 13:02:17 +02:00
Frederic Junod
2bd87313cd ol.MapBrowserEvent: call browserEvent.{preventDefault|stopPropagation} 2013-06-18 11:31:44 +02:00
Frederic Junod
1de3ffe57e Relay contextmenu browser event 2013-06-12 14:14:25 +02:00