Commit e8a4f373 authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov

Правка отрисовки бордеров для замерженных ячеек.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@54743 954022d7-b5bf-4e40-9824-e11837661b57
parent 55d298c8
...@@ -1761,7 +1761,7 @@ ...@@ -1761,7 +1761,7 @@
if (isAppBridge) {window['appBridge']['dummyCommandUpdate'] ();} if (isAppBridge) {window['appBridge']['dummyCommandUpdate'] ();}
// Отрисовываем бордеры // Отрисовываем бордеры
this._drawCellsBorders(drawingCtx, range, /*mergedCellsStage*/undefined, offsetX, offsetY); this._drawCellsBorders(drawingCtx, range, offsetX, offsetY);
if (isAppBridge) {window['appBridge']['dummyCommandUpdate'] ();} if (isAppBridge) {window['appBridge']['dummyCommandUpdate'] ();}
...@@ -2597,7 +2597,7 @@ ...@@ -2597,7 +2597,7 @@
}; };
/** Рисует рамки для ячеек */ /** Рисует рамки для ячеек */
WorksheetView.prototype._drawCellsBorders = function (drawingCtx, range, mergedCellsStage, leftFieldInPt, topFieldInPt) { WorksheetView.prototype._drawCellsBorders = function (drawingCtx, range, leftFieldInPt, topFieldInPt) {
//TODO: использовать стили линий при рисовании границ //TODO: использовать стили линий при рисовании границ
if (range === undefined) { if (range === undefined) {
range = this.visibleRange; range = this.visibleRange;
...@@ -2745,6 +2745,7 @@ ...@@ -2745,6 +2745,7 @@
while (0 <= prevCol && c[prevCol].width < t.width_1px) while (0 <= prevCol && c[prevCol].width < t.width_1px)
--prevCol; --prevCol;
var mc, isMerged;
var isPrevColExist = (0 <= prevCol); var isPrevColExist = (0 <= prevCol);
for (row = range.r1; row <= range.r2 && row < t.nRowsCount; ++row) { for (row = range.r1; row <= range.r2 && row < t.nRowsCount; ++row) {
if (r[row].height < t.height_1px) {continue;} if (r[row].height < t.height_1px) {continue;}
...@@ -2756,12 +2757,19 @@ ...@@ -2756,12 +2757,19 @@
var y1 = r[row].top - offsetY; var y1 = r[row].top - offsetY;
var y2 = y1 + r[row].height - this.height_1px; var y2 = y1 + r[row].height - this.height_1px;
for (col = range.c1; col <= range.c2 && col < t.nColsCount; ++col) { for (col = range.c1, isMerged = false; col <= range.c2 && col < t.nColsCount; ++col, isMerged = false) {
if (c[col].width < this.width_1px) {continue;} if (c[col].width < this.width_1px) {continue;}
var isFirstCol = col === range.c1; var isFirstCol = col === range.c1;
var isLastCol = col === range.c2;
var nextCol = col + 1; var nextCol = col + 1;
// ToDo merge ячейки if (mc && mc.c2 >= col) {
isMerged = true;
} else {
mc = this.model.getMergedByCell(row, col);
if (mc)
isMerged = true;
}
var x1 = c[col].left - offsetX; var x1 = c[col].left - offsetX;
var x2 = x1 + c[col].width - this.width_1px; var x2 = x1 + c[col].width - this.width_1px;
...@@ -2805,14 +2813,17 @@ ...@@ -2805,14 +2813,17 @@
bBotNext = arrNextRow[nextCol] = t._getVisibleCell(nextCol, nextRow).getBorder(); bBotNext = arrNextRow[nextCol] = t._getVisibleCell(nextCol, nextRow).getBorder();
} }
if (isMerged && row !== mc.r1 && row !== mc.r2 && col !== mc.c1 && col !== mc.c2)
continue;
// draw diagonal borders // draw diagonal borders
if (bCur.dd || bCur.du) { if ((bCur.dd || bCur.du) && (!isMerged || (row === mc.r1 && col === mc.c1))) {
var x2Diagonal = x2; var x2Diagonal = x2;
var y2Diagonal = y2; var y2Diagonal = y2;
if (mergedCellsStage) { if (isMerged) {
// Merge cells // Merge cells
x2Diagonal = c[range.c2].left + c[range.c2].width - offsetX - t.width_1px; x2Diagonal = c[mc.c2].left + c[mc.c2].width - offsetX - t.width_1px;
y2Diagonal = r[range.r2].top + r[range.r2].height - offsetY - t.height_1px; y2Diagonal = r[mc.r2].top + r[mc.r2].height - offsetY - t.height_1px;
} }
// ToDo Clip diagonal borders // ToDo Clip diagonal borders
/*ctx.save() /*ctx.save()
...@@ -2848,7 +2859,7 @@ ...@@ -2848,7 +2859,7 @@
// } // }
} }
// draw right border // draw right border
if ((!mergedCellsStage || col === range.c2) && !t._isRightBorderErased1(col, rowCache)) { if ((!isMerged || isLastCol) && !t._isRightBorderErased1(col, rowCache)) {
drawVerticalBorder2(bCur, bNext, x2, y1, y2); drawVerticalBorder2(bCur, bNext, x2, y1, y2);
} }
// draw top border // draw top border
...@@ -2860,12 +2871,14 @@ ...@@ -2860,12 +2871,14 @@
// drawHorizontalBorder.call(this, tb, lb, lbPrev, rb, rbPrev, x1, y1, x2); // drawHorizontalBorder.call(this, tb, lb, lbPrev, rb, rbPrev, x1, y1, x2);
// } // }
} }
if (!mergedCellsStage || isLastRow) { if (!isMerged || isLastRow) {
// draw bottom border // draw bottom border
drawHorizontalBorder2(bCur, bBotCur, x1, y2, x2); drawHorizontalBorder2(bCur, bBotCur, x1, y2, x2);
} }
} }
mc = undefined;
arrPrevRow = arrCurrRow; arrPrevRow = arrCurrRow;
arrCurrRow = arrNextRow; arrCurrRow = arrNextRow;
arrNextRow = []; arrNextRow = [];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment