loleaflet/README | 4 +++- loleaflet/spec/tilebench/TileBenchSpec.js | 28 +++++++++++++++++----------- loleaflet/src/control/Control.Search.js | 5 +++++ loleaflet/src/control/Permission.js | 1 + loleaflet/src/layer/tile/TileLayer.js | 7 ++++++- loolwsd/LOOLSession.cpp | 6 +++++- loolwsd/protocol.txt | 5 +++++ 7 files changed, 42 insertions(+), 14 deletions(-)
New commits: commit 45793d2cb3dcb77da58c26707899afbfee1a1fc1 Author: Mihai Varga <mihai.va...@collabora.com> Date: Fri Aug 7 09:50:50 2015 +0300 loleaflet: updated README with alltilesloaded event diff --git a/loleaflet/README b/loleaflet/README index 67faeeb..2b35a9e 100644 --- a/loleaflet/README +++ b/loleaflet/README @@ -101,11 +101,13 @@ Parts (like slides in presentation, or sheets in spreadsheets): Statusindicator (when the document is loading): - events map.on('statusindicator', function (e) {}) where: - + e.statusType = 'start' | 'setvalue' | 'finish' | 'loleafletloaded' + + e.statusType = 'start' | 'setvalue' | 'finish' | 'loleafletloaded' | 'alltilesloaded' + e.value == a value from 0 to 100 indicating the status if the statusType is 'setvalue + 'loleafletloaded' is fired when the JS code is initialized and the document load request is sent and we're waiting for the tiles + + 'alltilesloaded' is fired when all newly requested (empty tiles) have been loaded + it is not fired during pre-fetching and during editing Save: - API: commit 913ff95717b7d05a3fa22f07c42be4b2b5b39a97 Author: Mihai Varga <mihai.va...@collabora.com> Date: Fri Aug 7 09:49:20 2015 +0300 loleaflet: requestLOKSession event handler diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index 4011af5..1372443 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -111,6 +111,7 @@ L.TileLayer = L.GridLayer.extend({ this._map.on('copy', this._onCopy, this); this._map.on('zoomend', this._onUpdateCursor, this); this._map.on('dragstart', this._onDragStart, this); + this._map.on('requestloksession', this._onRequestLOKSession, this); this._startMarker.on('drag dragend', this._onSelectionHandleDrag, this); this._endMarker.on('drag dragend', this._onSelectionHandleDrag, this); this._textArea = this._map._textArea; @@ -732,6 +733,10 @@ L.TileLayer = L.GridLayer.extend({ _onDragStart: function () { this._map.on('moveend', this._updateScrollOffset, this); + }, + + _onRequestLOKSession: function () { + this.sendMessage('requestloksession'); } }); commit 2edb9086a0ebfafbc81a0326b13d510a12001b6c Author: Mihai Varga <mihai.va...@collabora.com> Date: Fri Aug 7 09:44:10 2015 +0300 loleaflet: fire 'alltilesloaded' as a statusindicator event This is fired all the new (empty) tiles have been loaded. This is not fire for prefetched tiles diff --git a/loleaflet/spec/tilebench/TileBenchSpec.js b/loleaflet/spec/tilebench/TileBenchSpec.js index 28ac2b0..a31a0b6 100644 --- a/loleaflet/spec/tilebench/TileBenchSpec.js +++ b/loleaflet/spec/tilebench/TileBenchSpec.js @@ -50,7 +50,7 @@ describe('TileBench', function () { }); afterEach(function () { - map.off('alltilesloaded'); + map.off('statusindicator'); }); after(function () { @@ -61,9 +61,11 @@ describe('TileBench', function () { describe('Benchmarking', function () { it('Load all new tiles', function (done) { - map.on('alltilesloaded', L.bind(function () { - loadCount += 1; - done(); + map.on('statusindicator', L.bind(function (e) { + if (e.statusType === 'alltilesloaded') { + loadCount += 1; + done(); + } }, done)); }); @@ -75,9 +77,11 @@ describe('TileBench', function () { var aproxTime = keyInput[keyInput.length - 1][0] + 2000; setTimeout(L.bind(function () { - map.on('alltilesloaded', L.bind(function () { - loadCount += 1; - getTimes(done); + map.on('statusindicator', L.bind(function (e) { + if (e.statusType === 'alltilesloaded') { + loadCount += 1; + getTimes(done); + } }, done)); @@ -115,10 +119,12 @@ describe('TileBench', function () { done(); } else { - map.on('alltilesloaded', L.bind(function () { - loadCount += 1; - clearTimeout(this.timeOut); - done(); + map.on('statusindicator', L.bind(function (e) { + if (e.statusType === 'alltilesloaded') { + loadCount += 1; + clearTimeout(this.timeOut); + done(); + } }, done)); } }, done), 3200); diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index eb8ca81..4011af5 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -418,7 +418,7 @@ L.TileLayer = L.GridLayer.extend({ if (!tile.loaded) { this._emptyTilesCount -= 1; if (this._emptyTilesCount === 0) { - this._map.fire('alltilesloaded'); + this._map.fire('statusindicator', {statusType: 'alltilesloaded'}); } } tile.el.src = img; commit 2f355dcee90741d0abde671ec9e8669fc4d7f581 Author: Mihai Varga <mihai.va...@collabora.com> Date: Thu Aug 6 18:54:45 2015 +0300 'requestloksession' message that starts a LOK process Used to predict the user's interaction with the document and to provide a better response time diff --git a/loleaflet/src/control/Control.Search.js b/loleaflet/src/control/Control.Search.js index 91e3638..c383e02 100644 --- a/loleaflet/src/control/Control.Search.js +++ b/loleaflet/src/control/Control.Search.js @@ -46,6 +46,9 @@ L.Control.Search = L.Control.extend({ this._updateDisabled(); this._refocusOnMap(); } + else { + this._map._docLayer.sendMessage('requestloksession'); + } }, _searchResultFound: function (e) { @@ -82,6 +85,8 @@ L.Control.Search = L.Control.extend({ bar.title = title; L.DomEvent + .on(bar, 'click', L.DomEvent.stop) + .on(bar, 'click', fn, this) .on(bar, 'keyup', L.DomEvent.stop) .on(bar, 'keyup', fn, this); diff --git a/loleaflet/src/control/Permission.js b/loleaflet/src/control/Permission.js index 8d80993..f6ed8ee 100644 --- a/loleaflet/src/control/Permission.js +++ b/loleaflet/src/control/Permission.js @@ -21,6 +21,7 @@ L.Map.include({ if (this._docLayer._permission === 'edit') { return; } + this._docLayer.sendMessage('requestloksession'); this.dragging.disable(); }, diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp index c74920f..1555017 100644 --- a/loolwsd/LOOLSession.cpp +++ b/loolwsd/LOOLSession.cpp @@ -259,6 +259,7 @@ bool MasterProcessSession::handleInput(const char *buffer, int length) tokens[0] != "invalidatetiles" && tokens[0] != "key" && tokens[0] != "mouse" && + tokens[0] != "requestloksession" && tokens[0] != "resetselection" && tokens[0] != "saveas" && tokens[0] != "selectgraphic" && @@ -302,7 +303,10 @@ bool MasterProcessSession::handleInput(const char *buffer, int length) if (_peer.expired()) dispatchChild(); - forwardToPeer(buffer, length); + if (tokens[0] != "requestloksession") + { + forwardToPeer(buffer, length); + } if ((tokens.count() > 1 && tokens[0] == "uno" && tokens[1] == ".uno:Save")) { _tileCache->documentSaved(); diff --git a/loolwsd/protocol.txt b/loolwsd/protocol.txt index 10b17f9..734d317 100644 --- a/loolwsd/protocol.txt +++ b/loolwsd/protocol.txt @@ -43,6 +43,11 @@ mouse type=<type> x=<x> y=<y> count=<count> <type> is 'buttondown', 'buttonup' or 'move', others are numbers. +requestloksession + + requests the initialization of a LOK process in an attempt to predict the user's + interaction with the document + resetselection saveas url=<url> format=<format> options=<options> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits