From f9d909d879da6a584cbf9d25c02e745d7c1c5a8b Mon Sep 17 00:00:00 2001 From: Mike Ungers Date: Tue, 17 Nov 2020 11:51:36 +0100 Subject: [PATCH] make postils work in frozen cells (https://github.com/mengshukeji/Luckysheet/issues/130) --- src/controllers/postil.js | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/src/controllers/postil.js b/src/controllers/postil.js index 40bd3cc..0ebaaa3 100644 --- a/src/controllers/postil.js +++ b/src/controllers/postil.js @@ -160,15 +160,21 @@ const luckysheetPostil = { let mouse = mouseposition(event.pageX, event.pageY); let scrollLeft = $("#luckysheet-cell-main").scrollLeft(); let scrollTop = $("#luckysheet-cell-main").scrollTop(); - let x = mouse[0] + scrollLeft; - let y = mouse[1] + scrollTop; + let x = mouse[0]; + let y = mouse[1]; + let offsetX = 0; + let offsetY = 0; if(luckysheetFreezen.freezenverticaldata != null && mouse[0] < (luckysheetFreezen.freezenverticaldata[0] - luckysheetFreezen.freezenverticaldata[2])){ - return; + offsetX = scrollLeft; + } else { + x += scrollLeft; } if(luckysheetFreezen.freezenhorizontaldata != null && mouse[1] < (luckysheetFreezen.freezenhorizontaldata[0] - luckysheetFreezen.freezenhorizontaldata[2])){ - return; + offsetY = scrollTop; + } else { + y += scrollTop; } let row_index = rowLocation(y)[2]; @@ -205,8 +211,8 @@ const luckysheetPostil = { col_pre = margeset.column[0]; } - let toX = col; - let toY = row_pre; + let toX = col + offsetX; + let toY = row_pre + offsetY; let fromX = toX + 18 * Store.zoomRatio; let fromY = toY - 18 * Store.zoomRatio; @@ -612,9 +618,19 @@ const luckysheetPostil = { col_pre = margeset.column[0]; } + let scrollLeft = $("#luckysheet-cell-main").scrollLeft(); + let scrollTop = $("#luckysheet-cell-main").scrollTop(); + let toX = col; let toY = row_pre; + if(luckysheetFreezen.freezenverticaldata != null && toX < (luckysheetFreezen.freezenverticaldata[0] - luckysheetFreezen.freezenverticaldata[2])){ + toX += scrollLeft; + } + if(luckysheetFreezen.freezenhorizontaldata != null && toY < (luckysheetFreezen.freezenhorizontaldata[0] - luckysheetFreezen.freezenhorizontaldata[2])){ + toY += scrollTop; + } + let left = postil["left"] == null ? toX + 18 * Store.zoomRatio : postil["left"] * Store.zoomRatio; let top = postil["top"] == null ? toY - 18 * Store.zoomRatio : postil["top"] * Store.zoomRatio; let width = postil["width"] == null ? _this.defaultWidth * Store.zoomRatio : postil["width"] * Store.zoomRatio; @@ -726,8 +742,18 @@ const luckysheetPostil = { col_pre = margeset.column[0]; } + let scrollLeft = $("#luckysheet-cell-main").scrollLeft(); + let scrollTop = $("#luckysheet-cell-main").scrollTop(); + let toX = col; let toY = row_pre; + + if(luckysheetFreezen.freezenverticaldata != null && toX < (luckysheetFreezen.freezenverticaldata[0] - luckysheetFreezen.freezenverticaldata[2])){ + toX += scrollLeft; + } + if(luckysheetFreezen.freezenhorizontaldata != null && toY < (luckysheetFreezen.freezenhorizontaldata[0] - luckysheetFreezen.freezenhorizontaldata[2])){ + toY += scrollTop; + } let left = postil["left"] == null ? toX + 18 * Store.zoomRatio : postil["left"] * Store.zoomRatio; let top = postil["top"] == null ? toY - 18 * Store.zoomRatio : postil["top"] * Store.zoomRatio;