[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-2-0' - loleaflet/src

Marco Cecchetti marco.cecchetti at collabora.com
Mon Dec 5 12:23:21 UTC 2016


 loleaflet/src/control/Control.Header.js |   23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

New commits:
commit 1ed05277b0e2a34e9786bbc95146d2c0c9ad53f2
Author: Marco Cecchetti <marco.cecchetti at collabora.com>
Date:   Sat Dec 3 14:28:04 2016 +0100

    loleaflet - calc: row/col header unproperly highlighted
    
    Change-Id: I7299dedf8d42e7f185c8977270c4fa8c0d14b820
    Reviewed-on: https://gerrit.libreoffice.org/31582
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/loleaflet/src/control/Control.Header.js b/loleaflet/src/control/Control.Header.js
index 7c33148..d5443cc 100644
--- a/loleaflet/src/control/Control.Header.js
+++ b/loleaflet/src/control/Control.Header.js
@@ -35,6 +35,10 @@ L.Control.Header = L.Control.extend({
 			this.unselect(childs[iterator]);
 		}
 		this._selection.start = this._selection.end = -1;
+		// after clearing selection, we need to select the header entry for the current cursor position,
+		// since we can't be sure that the selection clearing is due to click on a cell
+		// different from the one where the cursor is already placed
+		this.select(childs[this._current]);
 	},
 
 	updateSelection: function(element, start, end) {
@@ -58,6 +62,15 @@ L.Control.Header = L.Control.extend({
 				break;
 			}
 		}
+
+		// we need to unselect the row (column) header entry for the current cell cursor position
+		// since the selection could be due to selecting a whole row (column), so the selection
+		// does not start by clicking on a cell
+		if (this._current !== -1 && itStart !== -1 && itEnd !== -1) {
+			if (this._current < itStart || this._current > itEnd) {
+				this.unselect(childs[this._current]);
+			}
+		}
 		if (this._selection.start !== -1 && itStart !== -1 && itStart > this._selection.start) {
 			for (iterator = this._selection.start; iterator < itStart; iterator++) {
 				this.unselect(childs[iterator]);
@@ -85,8 +98,14 @@ L.Control.Header = L.Control.extend({
 			x0 = (iterator > 0 ? childs[iterator - 1].size : 0);
 			x1 = childs[iterator].size;
 			if (x0 <= start && start <= x1) {
-				this.unselect(childs[this._current]);
-				this.select(childs[iterator]);
+				// when a whole row (column) is selected the cell cursor is moved to the first column (row)
+				// but this action should not cause to select/unselect anything, on the contrary we end up
+				// with all column (row) header entries selected but the one where the cell cursor was
+				// previously placed
+				if (this._selection.start === -1 && this._selection.end === -1) {
+					this.unselect(childs[this._current]);
+					this.select(childs[iterator]);
+				}
 				this._current = iterator;
 				break;
 			}


More information about the Libreoffice-commits mailing list