[Libreoffice-commits] online.git: loleaflet/src
Mihai Varga
mihai.varga at collabora.com
Wed Jul 1 07:44:24 PDT 2015
loleaflet/src/layer/tile/TileLayer.js | 47 +++++++++++++++++++++++-----------
1 file changed, 33 insertions(+), 14 deletions(-)
New commits:
commit d24d8bdc08ce9fe081aec0bde5bc0bf5d745357d
Author: Mihai Varga <mihai.varga at collabora.com>
Date: Wed Jul 1 17:44:03 2015 +0300
Switch viewMode->editMode by clicking in the document
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index b63a2f3..d3a2419 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -196,6 +196,8 @@ L.TileLayer = L.GridLayer.extend({
this._map.on('viewmode editmode', this._updateEditViewMode, this);
this._map.on('drag', this._updateScrollOffset, this);
this._map.on('copy', this._onCopy, this);
+ this._map.on('mousedown mouseup mouseover mouseout mousemove dblclick',
+ this._onMouseEvent, this);
this._startMarker.on('drag dragend', this._onSelectionHandleDrag, this);
this._endMarker.on('drag dragend', this._onSelectionHandleDrag, this);
if (this.options.editMode) {
@@ -727,7 +729,7 @@ L.TileLayer = L.GridLayer.extend({
}
if (e.type === 'mousedown') {
- this._selecting = true;
+ this._mouseDown = true;
if (this._holdMouseEvent) {
clearTimeout(this._holdMouseEvent);
}
@@ -737,7 +739,7 @@ L.TileLayer = L.GridLayer.extend({
this._holdMouseEvent = setTimeout(L.bind(this._executeMouseEvents, this), 500);
}
else if (e.type === 'mouseup') {
- this._selecting = false;
+ this._mouseDown = false;
if (this._holdMouseEvent) {
clearTimeout(this._holdMouseEvent);
this._holdMouseEvent = null;
@@ -746,6 +748,10 @@ L.TileLayer = L.GridLayer.extend({
// i.e. we have mousedown, mouseup, mousedown and here comes another
// mouseup. Those are 2 consecutive clicks == doubleclick, we cancel
// everything and wait for the dblclick event to arrive where it's handled
+ if (!this._editMode) {
+ this._editMode = true;
+ this._map.fire('updatemode:edit');
+ }
this._mouseEventsQueue = [];
return;
}
@@ -763,10 +769,15 @@ L.TileLayer = L.GridLayer.extend({
L.DomUtil.removeClass(this._endMarker._icon, 'leaflet-not-clickable');
}
}
- else if (e.type === 'mousemove' && this._selecting) {
+ else if (e.type === 'mousemove' && this._mouseDown) {
if (this._holdMouseEvent) {
clearTimeout(this._holdMouseEvent);
this._holdMouseEvent = null;
+ if (!this._editMode) {
+ // The user just panned the document
+ this._mouseEventsQueue = [];
+ return;
+ }
for (var i = 0; i < this._mouseEventsQueue.length; i++) {
// synchronously execute old mouse events so we know that
// they arrive to the server before the move command
@@ -774,13 +785,15 @@ L.TileLayer = L.GridLayer.extend({
}
this._mouseEventsQueue = [];
}
- mousePos = this._latLngToTwips(e.latlng);
- this._postMouseEvent('move', mousePos.x, mousePos.y, 1);
- if (this._startMarker._icon) {
- L.DomUtil.addClass(this._startMarker._icon, 'leaflet-not-clickable');
- }
- if (this._endMarker._icon) {
- L.DomUtil.addClass(this._endMarker._icon, 'leaflet-not-clickable');
+ if (this._editMode) {
+ mousePos = this._latLngToTwips(e.latlng);
+ this._postMouseEvent('move', mousePos.x, mousePos.y, 1);
+ if (this._startMarker._icon) {
+ L.DomUtil.addClass(this._startMarker._icon, 'leaflet-not-clickable');
+ }
+ if (this._endMarker._icon) {
+ L.DomUtil.addClass(this._endMarker._icon, 'leaflet-not-clickable');
+ }
}
}
else if (e.type === 'dblclick') {
@@ -794,6 +807,16 @@ L.TileLayer = L.GridLayer.extend({
_executeMouseEvents: function () {
this._holdMouseEvent = null;
+ if (this._mouseEventsQueue.length === 1 && !this._editMode) {
+ // long mouse down or a mouseup after panning
+ this._mouseEventsQueue = [];
+ return;
+ }
+ else if (!this._editMode) {
+ // this time we have a mousedown and mouseup
+ this._editMode = true;
+ this._map.fire('updatemode:edit');
+ }
for (var i = 0; i < this._mouseEventsQueue.length; i++) {
this._mouseEventsQueue[i]();
}
@@ -820,8 +843,6 @@ L.TileLayer = L.GridLayer.extend({
if (e.type === 'viewmode') {
this._map.dragging.enable();
// disable all user interaction, will need to add keyboard too
- this._map.off('mousedown mouseup mouseover mouseout mousemove dblclick',
- this._onMouseEvent, this);
this._editMode = false;
this._onUpdateCursor();
this._clearSelections();
@@ -830,8 +851,6 @@ L.TileLayer = L.GridLayer.extend({
else if (e.type === 'editmode') {
this._editMode = true;
this._map.dragging.disable();
- this._map.on('mousedown mouseup mouseover mouseout mousemove dblclick',
- this._onMouseEvent, this);
this._map._container.focus();
}
},
More information about the Libreoffice-commits
mailing list