loleaflet/dist/toolbar/toolbar.js | 13 ++++++++- loleaflet/src/layer/tile/TileLayer.js | 47 +++++++++++++++++++++++++++++++++- loolwsd/MasterProcessSession.cpp | 7 +++++ 3 files changed, 65 insertions(+), 2 deletions(-)
New commits: commit e9bcd9a25df78b2ce6d24aa03940e358f282e26c Author: Pranav Kant <[email protected]> Date: Fri Oct 21 15:32:38 2016 +0530 Click to jump to user cursor Change-Id: If46abca58a1b401c1accc30192cb9c163b14005b diff --git a/loleaflet/dist/toolbar/toolbar.js b/loleaflet/dist/toolbar/toolbar.js index 44ba7b0..54eaf65 100644 --- a/loleaflet/dist/toolbar/toolbar.js +++ b/loleaflet/dist/toolbar/toolbar.js @@ -1331,8 +1331,19 @@ map.on('statusindicator', function (e) { } }); +function onUseritemClicked(e) { + var viewId = parseInt(e.currentTarget.id.replace('user-', '')); + if (map._docLayer) { + if (map.getDocType() === 'spreadsheet') { + map._docLayer.goToCellCursor(viewId); + } else if (map.getDocType() === 'text') { + map._docLayer.goToCursor(viewId); + } + } +} + function getUserItem(viewId, userName) { - var html = '<tr class="useritem" id="user-' + viewId + '">' + + var html = '<tr class="useritem" id="user-' + viewId + '" onclick=onUseritemClicked(event)>' + '<td class="username">' + userName + '</td>' + '<td class="lock"></td>' + '</tr>'; diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index 1f3d7f8..fb0017c 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -910,6 +910,18 @@ L.TileLayer = L.GridLayer.extend({ } }, + goToCursor: function() { + if (this._isCursorVisible && !this._map.getBounds().contains(this._visibleCursor)) { + var cursorPos = this._visibleCursor.getNorthWest(); + var center = this._map.project(cursorPos); + center = center.subtract(this._map.getSize().divideBy(2)); + center.x = Math.round(center.x < 0 ? 0 : center.x); + center.y = Math.round(center.y < 0 ? 0 : center.y); + + this._map.fire('scrollto', {x: center.x, y: center.y}); + } + }, + // Update dragged graphics selection resize. _onGraphicEdit: function (e) { if (!e.handle) { return; } @@ -1041,6 +1053,39 @@ L.TileLayer = L.GridLayer.extend({ } }, + goToCellCursor: function() { + // TODO: Lots of common code with onUpdateCellCursor. Factor out + var mapBounds = this._map.getBounds(); + if (this._cellCursor && !this._isEmptyRectangle(this._cellCursor) && !mapBounds.contains(this._cellCursor)) { + var scrollX = 0; + var scrollY = 0; + + var spacingX = Math.abs(this._cellCursor.getEast() - this._cellCursor.getWest()) / 4.0; + var spacingY = Math.abs((this._cellCursor.getSouth() - this._cellCursor.getNorth())) / 4.0; + if (this._cellCursor.getWest() < mapBounds.getWest()) { + scrollX = this._cellCursor.getWest() - mapBounds.getWest() - spacingX; + } else if (this._cellCursor.getEast() > mapBounds.getEast()) { + scrollX = this._cellCursor.getEast() - mapBounds.getEast() + spacingX; + } + if (this._cellCursor.getNorth() > mapBounds.getNorth()) { + scrollY = this._cellCursor.getNorth() - mapBounds.getNorth() + spacingY; + } else if (this._cellCursor.getSouth() < mapBounds.getSouth()) { + scrollY = this._cellCursor.getSouth() - mapBounds.getSouth() - spacingY; + } + + if (scrollX !== 0 || scrollY !== 0) { + var newCenter = mapBounds.getCenter(); + newCenter.lng += scrollX; + newCenter.lat += scrollY; + var center = this._map.project(newCenter); + center = center.subtract(this._map.getSize().divideBy(2)); + center.x = Math.round(center.x < 0 ? 0 : center.x); + center.y = Math.round(center.y < 0 ? 0 : center.y); + this._map.fire('scrollto', {x: center.x, y: center.y}); + } + } + }, + // Update text selection handlers. _onUpdateTextSelection: function () { var startMarker, endMarker; commit 2a2055e4079be208d0f73d22ed8ef6de52353f76 Author: Pranav Kant <[email protected]> Date: Fri Oct 21 14:53:21 2016 +0530 loolwsd: Inform about editlock here too This was accidentally removed in 0a9a94dacd7b12228fda7ff5690fdeb8c9425ac2 but its needed for new views to know about their editlock state. Change-Id: I4b02424ea143c0c5617ff74b0cde3edbc0e908b6 diff --git a/loolwsd/MasterProcessSession.cpp b/loolwsd/MasterProcessSession.cpp index f312ed8..19822c2 100644 --- a/loolwsd/MasterProcessSession.cpp +++ b/loolwsd/MasterProcessSession.cpp @@ -221,6 +221,13 @@ bool MasterProcessSession::_handleInput(const char *buffer, int length) // Forward the status response to the client. forwardToPeer(buffer, length); + + // And let clients know if they hold the edit lock. + std::string message = "editlock: "; + message += std::to_string(peer->isEditLocked()); + Log::debug("Forwarding [" + message + "] in response to status."); + forwardToPeer(message.c_str(), message.size()); + return true; } else if (tokens[0] == "commandvalues:") commit db18481dd24eacddd7a5168f8c65ee35446c4c17 Author: Pranav Kant <[email protected]> Date: Thu Oct 20 15:22:46 2016 +0530 lolefalet: Show cursor for 'view' sessions too Change-Id: Ib1f234b6405ec7f5758ed636264b381262b2e17f diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index 46f4265..1f3d7f8 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -893,7 +893,7 @@ L.TileLayer = L.GridLayer.extend({ var pixBounds = L.bounds(this._map.latLngToLayerPoint(this._visibleCursor.getSouthWest()), this._map.latLngToLayerPoint(this._visibleCursor.getNorthEast())); var cursorPos = this._visibleCursor.getNorthWest(); - if (this._map._permission === 'edit' && this._isCursorVisible && this._isCursorOverlayVisible + if (this._map._permission !== 'readonly' && this._isCursorVisible && this._isCursorOverlayVisible && !this._isEmptyRectangle(this._visibleCursor)) { if (this._cursorMarker) { this._map.removeLayer(this._cursorMarker); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
