Commit graph

90 commits

Author SHA1 Message Date
Jürg Lehni
f874b927bf Reflect View#zoom through matrix decomposition, and implement additional decomposed properties.
Closes #1107
2016-07-20 00:04:24 +02:00
Jürg Lehni
e539633852 Implement new and shorter segments array notation.
Supporting:

- Closing paths by including `true` as the last entry
- Nested segment arrays that can be passed to PathItem.create() and the CompoundPath constructor to create all sub-paths
2016-07-19 13:08:21 +02:00
Jürg Lehni
32d8c969fb Clean up handling of #_set(), #set() and #initialize()
Convention:

- #_set() is for actually setting properties, e.g. on Point, Size, so that derived classes can reuse other parts (e.g. SegmentPoint)
- #set() is a shortcut to #initialize() on all basic types, to offer the same amount of flexibility when setting values.
2016-07-18 20:11:01 +02:00
Jürg Lehni
e15de78347 Update JSHint and fix some some hinting errors. 2016-07-09 14:32:01 +02:00
Jürg Lehni
ab24f92373 Bring back accidentally removed hit-test optimization in event handling.
See comment.
2016-06-19 11:02:54 +02:00
Jürg Lehni
f97143d37d Fix jshint issue introduced by a03631f620 2016-06-17 00:50:06 +02:00
Jürg Lehni
a03631f620 Remove MouseEvent#target hitTest() getter magic again.
Relates to #995
2016-06-17 00:42:40 +02:00
Jürg Lehni
c378050783 Fix linting error. 2016-06-14 17:02:05 +02:00
Jürg Lehni
724bcb2e35 Make sure mouse events propagate to the view while their targets remain consistent.
Closes #995
2016-06-14 16:52:31 +02:00
Jürg Lehni
93e4d81645 Clean up previous fix for #1069 by better handling mouseenter / leave events. 2016-06-14 16:15:50 +02:00
Jürg Lehni
68be3f102e Prevent mousedown events from disturbing mousenter / mouseleave.
Closes #1069
2016-06-11 11:14:19 +02:00
Jürg Lehni
08bf7bfe60 Fix #995: Improve handling of event propagation on View and Item. 2016-02-26 15:13:49 +01:00
Jürg Lehni
b71e3a44d9 Fix #981: Make sure event.delta is always calculated correctly.
The first mousemove / mousedrag events wrongly received the delta from the last mouseup event.
2016-02-19 13:49:06 +01:00
Jürg Lehni
9f9222f416 List all supported events in event methods on View. 2016-02-14 23:04:48 +01:00
Jürg Lehni
06d6b5195b Do not cancel mousedrag events on stopPropagation()
Use preventDefault() instead.
Closes #952
2016-02-12 19:01:34 +01:00
Jürg Lehni
de9653ab45 Fix new exception in unit tests. 2016-02-09 10:07:28 +01:00
Jürg Lehni
da216aa581 Improve handling of view updates and detection of invisible documents.
Switch to the new HTML5 Page Visibility API.
2016-02-09 09:59:19 +01:00
Jürg Lehni
8fb7c41537 Implement support for web-workers.
Relates to #634, closes #582
2016-02-02 17:30:38 +01:00
Jürg Lehni
e7c4e3c990 Implement View#autoUpdate to control automatic updates.
Closes #921
2016-01-27 13:10:04 +01:00
Jürg Lehni
1e649362bd Fix issue in View#exportImage() 2016-01-27 12:51:02 +01:00
Jürg Lehni
b40ff49523 Add explanation about View#_itemEvents.native. 2016-01-27 12:17:38 +01:00
Jürg Lehni
5fa0810ca3 Streamline View#_countItemEvent() code a bit. 2016-01-27 12:15:00 +01:00
Jürg Lehni
0cfa83fc32 Make item-level mousedrag events work again. 2016-01-27 12:11:59 +01:00
Jürg Lehni
d92628a432 Make click and doubleclick events work on View. 2016-01-27 11:38:45 +01:00
Jürg Lehni
3276616f53 Introduce Item._itemHandlers to remove code redundancy. 2016-01-27 11:38:14 +01:00
Jürg Lehni
849688833e Implement key events on View.
Closes #896
2016-01-27 11:36:39 +01:00
Jürg Lehni
8391543115 Further improve Raster documentation. 2016-01-27 10:39:03 +01:00
Jürg Lehni
c5632d8a6a Improve documentation for event handlers on View and Item. 2016-01-27 10:27:14 +01:00
Jürg Lehni
52017340d2 Do not fire two subsequent mousedown events.
This should fix #922, but needs testing.
2016-01-27 09:53:09 +01:00
Jürg Lehni
caa93a51ca Improve handling of removeOn*() and filter out duplicate move events.
Closes #913
2016-01-27 09:48:20 +01:00
Jürg Lehni
ee4760afc4 Fix issue with zoomed retina canvases when repeatetly initializing same view canvas. 2016-01-27 09:38:57 +01:00
Jürg Lehni
86f6d8eccd Fix crash in unit tests. 2016-01-26 23:27:38 +01:00
Jürg Lehni
4af8999135 Clean up View#_handleFrame() 2016-01-26 22:35:46 +01:00
Jürg Lehni
b71ffdbe71 Remove all direct calls to view.update() and favor of the new view.requestUpdate()
Pure window.requestAnimationFrame() smoothness, automatic updates even when working directly from JavaScript, and no more slow-downs from onLoad events!

Closes #830, #925
2016-01-26 21:37:27 +01:00
Jürg Lehni
e1a51f858a More work on unified version for browsers and node.
Relates to #739
2016-01-26 20:02:23 +01:00
Jürg Lehni
c479ec9272 Start with transition to unified version.
Relates to #739
2016-01-26 11:41:49 +01:00
Jürg Lehni
d292e08ed2 Various renaming and introduction of additional methods in Matrix
- Rename Matrix#concatenate() to #append() and #preConcatenate() to #prepend().
- Over #invert() as alternative to #inverted(), directly modifying the matrix.
- Make Matrix#_shiftless() and internal function.
- Introduce versions that return copies instead, named #appended(). (previously #chain()) and #prepended().
- Rename internal Path#_getPenPadding() to #_getStrokePadding().
2016-01-17 19:30:47 +01:00
Jürg Lehni
7783ebeed1 Explain reasons for /* jshint */ statements.
And consistently name Prepro.js
2016-01-16 15:37:02 +01:00
Jürg Lehni
3a3d46692b Give view proper Matrix transformation functions, just like on Item.
Relates to #832
2016-01-16 15:10:28 +01:00
Jürg Lehni
7fa013092e Define View#matrix, giving access to more fine-grained control over the view transformation.
Relates to #832
2016-01-16 14:25:11 +01:00
Jürg Lehni
2669d06642 Merge Item#_remove() and Layer#_remove().
And add Project#_changed(), so it can be called through #_getOwner().
2016-01-16 14:21:05 +01:00
Jürg Lehni
1bc2d2fffe Fix bug with mouse events in scripts without tools. 2016-01-15 23:45:58 +01:00
Jürg Lehni
495cf9f7ce Remove unused parameter. 2016-01-14 17:44:00 +01:00
Jürg Lehni
cf924512c0 Further streamline and improve tool mouse-event handling. 2016-01-14 14:16:20 +01:00
Jürg Lehni
e2723f0312 Make sure we really don't call preventDefault() if there's only a mousemove handler. 2016-01-14 12:42:33 +01:00
Jürg Lehni
5f44d814f5 Improve handling of previously focused view.
Make sure we switch back to the original one if there are multiple neighboring views.
2016-01-14 11:47:18 +01:00
Jürg Lehni
cee3959bfa Improve handling of temporary view focus switch in mousemove.
Closes #841
2016-01-14 11:43:17 +01:00
Jürg Lehni
edcb2a3868 Handle mouseover events on unfocused views again. 2016-01-14 11:34:48 +01:00
Jürg Lehni
b8a1fbcd67 Implement new convention when to call event.preventDefault() after mouse-events:
- If any of the handlers were called, except for mousemove events which need to call `event.preventDefault()` explicitly, or `return false;`.
- If this is a mousedown event, and the view or tools respond to mouseup.
2016-01-14 11:19:54 +01:00
Jürg Lehni
1a6bf972d5 A lot of fine-tuning and fixing to better handle touch scrolling.
Relates to #686
2016-01-14 10:59:14 +01:00