[Libreoffice-commits] online.git: loleaflet/src
Henry Castro
hcastro at collabora.com
Wed Sep 7 16:16:52 UTC 2016
loleaflet/src/control/Parts.js | 1
loleaflet/src/layer/marker/Cursor.js | 33 +++++++++++--------
loleaflet/src/layer/tile/TileLayer.js | 58 +++++++++++++++++++---------------
3 files changed, 54 insertions(+), 38 deletions(-)
New commits:
commit a666c01c03ac3bd680239e22b84ba4fa2f6971e6
Author: Henry Castro <hcastro at collabora.com>
Date: Wed Sep 7 12:16:23 2016 -0400
loleaflet: fix part not taken into account for cursors
Also refactor cursor marker
diff --git a/loleaflet/src/control/Parts.js b/loleaflet/src/control/Parts.js
index cf90a14..db63f95 100644
--- a/loleaflet/src/control/Parts.js
+++ b/loleaflet/src/control/Parts.js
@@ -31,6 +31,7 @@ L.Map.include({
docType: docLayer._docType
});
this._socket.sendMessage('setclientpart part=' + docLayer._selectedPart);
+ docLayer._updateViewCursors();
docLayer._clearSelections();
docLayer._updateOnChangePart();
docLayer._pruneTiles();
diff --git a/loleaflet/src/layer/marker/Cursor.js b/loleaflet/src/layer/marker/Cursor.js
index cebc657..7fade22 100644
--- a/loleaflet/src/layer/marker/Cursor.js
+++ b/loleaflet/src/layer/marker/Cursor.js
@@ -8,18 +8,25 @@ L.Cursor = L.Layer.extend({
opacity: 1
},
- initialize: function (latlng, options) {
+ initialize: function (latlng, size, options) {
L.setOptions(this, options);
this._latlng = L.latLng(latlng);
+ this._size = L.point(size);
},
onAdd: function () {
- this._initLayout();
+ if (!this._container) {
+ this._initLayout();
+ }
+
this.update();
+ this.getPane().appendChild(this._container);
},
onRemove: function () {
- L.DomUtil.remove(this._container);
+ if (this._container) {
+ this.getPane().removeChild(this._container);
+ }
},
getEvents: function () {
@@ -32,16 +39,18 @@ L.Cursor = L.Layer.extend({
return this._latlng;
},
- setLatLng: function (latlng) {
+ setLatLng: function (latlng, size) {
var oldLatLng = this._latlng;
this._latlng = L.latLng(latlng);
+ this._size = L.point(size);
this.update();
return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});
},
update: function () {
- if (this._container) {
+ if (this._container && this._map) {
var pos = this._map.latLngToLayerPoint(this._latlng).round();
+ this._setSize();
this._setPos(pos);
}
return this;
@@ -71,10 +80,6 @@ L.Cursor = L.Layer.extend({
L.DomEvent
.disableClickPropagation(this._cursor)
.disableScrollPropagation(this._container);
-
- if (this._container) {
- this.getPane().appendChild(this._container);
- }
},
_setPos: function (pos) {
@@ -97,14 +102,14 @@ L.Cursor = L.Layer.extend({
L.DomUtil.setOpacity(this._container, opacity);
},
- setSize: function (size) {
- this._cursor.style.height = size.y + 'px';
- this._container.style.top = '-' + (this._container.clientHeight - size.y - 2) / 2 + 'px';
+ _setSize: function () {
+ this._cursor.style.height = this._size.y + 'px';
+ this._container.style.top = '-' + (this._container.clientHeight - this._size.y - 2) / 2 + 'px';
}
});
-L.cursor = function (latlng, options) {
- return new L.Cursor(latlng, options);
+L.cursor = function (latlng, size, options) {
+ return new L.Cursor(latlng, size, options);
};
L.Cursor.getCursorURL = function (localPath) {
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 388582f..9f70ac2 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -576,8 +576,12 @@ L.TileLayer = L.GridLayer.extend({
this._viewCursors[viewId].bounds = new L.LatLngBounds(
this._twipsToLatLng(topLeftTwips, this._map.getZoom()),
this._twipsToLatLng(bottomRightTwips, this._map.getZoom())),
- this._viewCursors[viewId].part = obj.part;
- this._viewCursors[viewId].visible = true;
+ this._viewCursors[viewId].part = parseInt(obj.part);
+
+ // FIXME. Server not sending view visible cursor
+ if (typeof this._viewCursors[viewId].visible === 'undefined') {
+ this._viewCursors[viewId].visible = true;
+ }
this._onUpdateViewCursor(viewId);
},
@@ -1098,14 +1102,12 @@ L.TileLayer = L.GridLayer.extend({
if (this._map._permission === 'edit' && this._isCursorVisible && this._isCursorOverlayVisible
&& !this._isEmptyRectangle(this._visibleCursor)) {
- if (this._cursorMarker) {
- this._map.removeLayer(this._cursorMarker);
+ if (!this._cursorMarker) {
+ this._cursorMarker = L.cursor(null, null, {blink: true});
}
- this._cursorMarker = L.cursor(cursorPos, {blink: true});
+ this._cursorMarker.setLatLng(cursorPos, pixBounds.getSize().multiplyBy(this._map.getZoomScale(this._map.getZoom())));
this._map.addLayer(this._cursorMarker);
- this._cursorMarker.setSize(pixBounds.getSize().multiplyBy(
- this._map.getZoomScale(this._map.getZoom())));
}
else if (this._cursorMarker) {
this._map.removeLayer(this._cursorMarker);
@@ -1125,27 +1127,35 @@ L.TileLayer = L.GridLayer.extend({
var viewCursorPos = this._viewCursors[viewId].bounds.getNorthWest();
var viewCursorMarker = this._viewCursors[viewId].marker;
var viewCursorVisible = this._viewCursors[viewId].visible;
-
- if (viewCursorVisible && !this._isEmptyRectangle(this._viewCursors[viewId].bounds)) {
- if (viewCursorMarker) {
- this._map.removeLayer(viewCursorMarker);
+ var viewPart = this._viewCursors[viewId].part;
+
+ if (viewCursorVisible && !this._isEmptyRectangle(this._viewCursors[viewId].bounds) &&
+ (this._docType === 'text' || this._selectedPart === viewPart)) {
+ if (!viewCursorMarker) {
+ var viewCursorOptions = {
+ color: L.LOUtil.getViewIdHexColor(viewId),
+ blink: false,
+ header: true, // we want a 'hat' to our view cursors (which will contain view user names)
+ headerTimeout: 3000, // hide after some interval
+ headerName: this._map.getViewName(viewId)
+ };
+
+ viewCursorMarker = L.cursor(null, null, viewCursorOptions);
+ this._viewCursors[viewId].marker = viewCursorMarker;
}
- var viewCursorOptions = {
- color: L.LOUtil.getViewIdHexColor(viewId),
- blink: false,
- header: true, // we want a 'hat' to our view cursors (which will contain view user names)
- headerTimeout: 3000, // hide after some interval
- headerName: this._map.getViewName(viewId)
- };
- viewCursorMarker = L.cursor(viewCursorPos, viewCursorOptions);
- this._map.addLayer(viewCursorMarker);
- viewCursorMarker.setSize(pixBounds.getSize().multiplyBy(this._map.getZoomScale(this._map.getZoom())));
- } else if (viewCursorMarker) {
- this._map.removeLayer(this._viewCursors[viewId].marker);
+ viewCursorMarker.setLatLng(viewCursorPos, pixBounds.getSize().multiplyBy(this._map.getZoomScale(this._map.getZoom())));
+ this._map.addLayer(viewCursorMarker);
+ }
+ else if (viewCursorMarker) {
+ this._map.removeLayer(viewCursorMarker);
}
+ },
- this._viewCursors[viewId].marker = viewCursorMarker;
+ _updateViewCursors: function () {
+ for (var key in this._viewCursors) {
+ this._onUpdateViewCursor(key);
+ }
},
// Update dragged graphics selection resize.
More information about the Libreoffice-commits
mailing list