loleaflet/src/layer/tile/TileLayer.js |   48 ++++++++++++++++++++++++++++++++++
 loolwsd/LOOLKit.cpp                   |   14 ++++-----
 2 files changed, 55 insertions(+), 7 deletions(-)

New commits:
commit 6df1c4c6f7f445bed0e3ca2c777c73cab97654b6
Author: Pranav Kant <pran...@collabora.co.uk>
Date:   Mon Aug 15 21:12:03 2016 +0530

    loolwsd: fix impress; get viewid after initializeForRendering()
    
    For impress, call to initializeForRendering() *changes* the
    viewid, so there's no point in remembering the viewid before call
    to initializeForRendering().

diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp
index 4777922..e4d33df 100644
--- a/loolwsd/LOOLKit.cpp
+++ b/loolwsd/LOOLKit.cpp
@@ -1013,11 +1013,7 @@ private:
             if (_multiView)
             {
                 Log::info("Loading view to document from URI: [" + uri + "] 
for session [" + sessionId + "].");
-                viewId = _loKitDocument->createView();
-
-                Log::info() << "Document [" << _url << "] view ["
-                            << viewId << "] loaded, leaving "
-                            << (_clientViews + 1) << " views." << Log::end;
+                _loKitDocument->createView();
             }
         }
 
@@ -1027,10 +1023,14 @@ private:
 
         if (_multiView)
         {
+            viewId = _loKitDocument->getView();
             _viewIdToCallbackDescr.emplace(viewId,
-                std::unique_ptr<CallbackDescriptor>(new CallbackDescriptor({ 
this, viewId })));
-
+                                           
std::unique_ptr<CallbackDescriptor>(new CallbackDescriptor({ this, viewId })));
             _loKitDocument->registerCallback(ViewCallback, 
_viewIdToCallbackDescr[viewId].get());
+
+            Log::info() << "Document [" << _url << "] view ["
+                        << viewId << "] loaded, leaving "
+                        << (_clientViews + 1) << " views." << Log::end;
         }
         else
         {
commit 82e1769fe8322f695160411bd3c5d0dd88eacaad
Author: Pranav Kant <pran...@collabora.co.uk>
Date:   Thu Aug 11 13:03:07 2016 +0530

    loleaflet: textviewcallback support; colored text selections

diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index 5e820ff..5fd01f2 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -136,6 +136,9 @@ L.TileLayer = L.GridLayer.extend({
                this._getToolbarCommandsValues();
                this._selections = new L.LayerGroup();
                map.addLayer(this._selections);
+               this._viewSelectionsGroup = new L.LayerGroup();
+               map.addLayer(this._viewSelectionsGroup);
+               this._viewSelections = {};
 
                this._searchResultsLayer = new L.LayerGroup();
                map.addLayer(this._searchResultsLayer);
@@ -366,6 +369,9 @@ L.TileLayer = L.GridLayer.extend({
                else if (textMsg.startsWith('remallviews:')) {
                        this._onRemAllViewMsg(textMsg);
                }
+               else if (textMsg.startsWith('textviewselection:')) {
+                       this._onTextViewSelectionMsg(textMsg);
+               }
        },
 
        _onCommandValuesMsg: function (textMsg) {
@@ -789,6 +795,48 @@ L.TileLayer = L.GridLayer.extend({
                this._onUpdateTextSelection();
        },
 
+       _onTextViewSelectionMsg: function (textMsg) {
+               textMsg = textMsg.substring('textviewselection:'.length + 1);
+               var obj = JSON.parse(textMsg);
+               var viewId = parseInt(obj.viewId);
+
+               // Ignore if viewid is same as ours
+               if (viewId === this._viewId) {
+                       return;
+               }
+
+               var strTwips = obj.selection.match(/\d+/g);
+               if (this._viewSelections[viewId]) {
+                       
this._viewSelectionsGroup.removeLayer(this._viewSelections[viewId]);
+               }
+               if (strTwips != null) {
+                       var rectangles = [];
+                       var selectionCenter = new L.Point(0, 0);
+                       for (var i = 0; i < strTwips.length; i += 4) {
+                               var topLeftTwips = new 
L.Point(parseInt(strTwips[i]), parseInt(strTwips[i + 1]));
+                               var offset = new L.Point(parseInt(strTwips[i + 
2]), parseInt(strTwips[i + 3]));
+                               var topRightTwips = topLeftTwips.add(new 
L.Point(offset.x, 0));
+                               var bottomLeftTwips = topLeftTwips.add(new 
L.Point(0, offset.y));
+                               var bottomRightTwips = topLeftTwips.add(offset);
+                               rectangles.push([bottomLeftTwips, 
bottomRightTwips, topLeftTwips, topRightTwips]);
+                               selectionCenter = 
selectionCenter.add(topLeftTwips);
+                               selectionCenter = 
selectionCenter.add(offset.divideBy(2));
+                       }
+
+                       var polygons = 
L.PolyUtil.rectanglesToPolygons(rectangles, this);
+                       for (i = 0; i < polygons.length; i++) {
+                               var selection = new L.Polygon(polygons[i], {
+                                       pointerEvents: 'none',
+                                       fillColor: 
L.LOUtil.getViewIdHexColor(viewId),
+                                       fillOpacity: 0.25,
+                                       weight: 2,
+                                       opacity: 0.25});
+                               this._viewSelections[viewId] = selection;
+                               this._viewSelectionsGroup.addLayer(selection);
+                       }
+               }
+       },
+
        _onTextSelectionContentMsg: function (textMsg) {
                this._selectionTextContent = textMsg.substr(22);
        },
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to