[Libreoffice-commits] online.git: loleaflet/src
Dennis Francis (via logerrit)
logerrit at kemper.freedesktop.org
Sat Jul 4 16:06:21 UTC 2020
loleaflet/src/control/Control.ColumnHeader.js | 7 ++++++
loleaflet/src/control/Control.RowHeader.js | 7 ++++++
loleaflet/src/layer/tile/CalcTileLayer.js | 30 +++++++++++++++++++-------
3 files changed, 36 insertions(+), 8 deletions(-)
New commits:
commit 3f97c85218705f29206a0c22eea6419c5698066a
Author: Dennis Francis <dennis.francis at collabora.com>
AuthorDate: Sun May 10 01:57:01 2020 +0530
Commit: Dennis Francis <dennis.francis at collabora.com>
CommitDate: Sat Jul 4 18:06:03 2020 +0200
Do not rely on js ordering of multi event execution
On getting a .uno:ViewRowColumnHeaders message, the order of header
painting should be the headers elements first, then the cursor
indication on the header, then the selection area indication on the
header if any. More importantly none of these painting will be correct
if the data in the tickMap member of both headers is stale.
As of now all three of these are executed by three different events.
Lets avoid depending on the implicit ordering of execution of these and
do these synchronously as part of the main event
('viewrowcolumnheaders') handler.
Change-Id: I4da29ba893c408af45159073e4389481b2eaecc7
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97937
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Dennis Francis <dennis.francis at collabora.com>
diff --git a/loleaflet/src/control/Control.ColumnHeader.js b/loleaflet/src/control/Control.ColumnHeader.js
index 8c049fd93..f9d3feedb 100644
--- a/loleaflet/src/control/Control.ColumnHeader.js
+++ b/loleaflet/src/control/Control.ColumnHeader.js
@@ -378,6 +378,13 @@ L.Control.ColumnHeader = L.Control.Header.extend({
viewRowColumnHeaders: function (e) {
if (e.data.columns && e.data.columns.length > 0) {
this.fillColumns(e.data.columns, e.data.columnGroups, e.converter, e.context);
+ this._onUpdateCurrentColumn(e.cursor);
+ if (e.selection && e.selection.hasSelection) {
+ this._onUpdateSelection(e.selection);
+ }
+ else {
+ this._onClearSelection();
+ }
}
},
diff --git a/loleaflet/src/control/Control.RowHeader.js b/loleaflet/src/control/Control.RowHeader.js
index d1f475723..0bf1fcb38 100644
--- a/loleaflet/src/control/Control.RowHeader.js
+++ b/loleaflet/src/control/Control.RowHeader.js
@@ -367,6 +367,13 @@ L.Control.RowHeader = L.Control.Header.extend({
viewRowColumnHeaders: function (e) {
if (e.data.rows && e.data.rows.length) {
this.fillRows(e.data.rows, e.data.rowGroups, e.converter, e.context);
+ this._onUpdateCurrentRow(e.cursor);
+ if (e.selection && e.selection.hasSelection) {
+ this._onUpdateSelection(e.selection);
+ }
+ else {
+ this._onClearSelection();
+ }
}
},
diff --git a/loleaflet/src/layer/tile/CalcTileLayer.js b/loleaflet/src/layer/tile/CalcTileLayer.js
index 1e82f2598..684d559c1 100644
--- a/loleaflet/src/layer/tile/CalcTileLayer.js
+++ b/loleaflet/src/layer/tile/CalcTileLayer.js
@@ -373,6 +373,10 @@ L.CalcTileLayer = L.TileLayer.extend({
},
_onUpdateCurrentHeader: function() {
+ this._map.fire('updatecurrentheader', this._getCursorPosSize());
+ },
+
+ _getCursorPosSize: function () {
var x = -1, y = -1;
if (this._cellCursorXY) {
x = this._cellCursorXY.x + 1;
@@ -382,20 +386,30 @@ L.CalcTileLayer = L.TileLayer.extend({
if (this._cellCursor && !this._isEmptyRectangle(this._cellCursor)) {
size = this._cellCursorTwips.getSize();
}
- this._map.fire('updatecurrentheader', {curX: x, curY: y, width: size.x, height: size.y});
+
+ return { curX: x, curY: y, width: size.x, height: size.y };
},
_onUpdateSelectionHeader: function () {
+ var selectionHeaderData = this._getSelectionHeaderData();
+ if (selectionHeaderData.hasSelection) {
+ this._map.fire('updateselectionheader', selectionHeaderData);
+ return;
+ }
+
+ this._map.fire('clearselectionheader');
+ },
+
+ _getSelectionHeaderData: function() {
var layers = this._selections.getLayers();
var layer = layers.pop();
if (layers.length === 0 && layer && layer.getLatLngs().length === 1) {
var start = this._latLngToTwips(layer.getBounds().getNorthWest()).add([1, 1]);
var end = this._latLngToTwips(layer.getBounds().getSouthEast()).subtract([1, 1]);
- this._map.fire('updateselectionheader', {start: start, end: end});
- }
- else {
- this._map.fire('clearselectionheader');
+ return { hasSelection: true, start: start, end: end };
}
+
+ return { hasSelection: false };
},
_onStatusMsg: function (textMsg) {
@@ -452,14 +466,14 @@ L.CalcTileLayer = L.TileLayer.extend({
var comment;
if (values.commandName === '.uno:ViewRowColumnHeaders') {
-// console.log('view row column headers: ' + JSON.stringify(values));
this._map.fire('viewrowcolumnheaders', {
data: values,
+ cursor: this._getCursorPosSize(),
+ selection: this._getSelectionHeaderData(),
converter: this._twipsToPixels,
context: this
});
- this._onUpdateCurrentHeader();
- this._onUpdateSelectionHeader();
+
} else if (values.comments) {
this.clearAnnotations();
for (var index in values.comments) {
More information about the Libreoffice-commits
mailing list