Commit 6a40b061 authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov

Поправил баг http://bugzserver/show_bug.cgi?id=26707

Плюс поправил проблему, когда изменяем мышкой позицию закрепленной области и уходим с канваса и возвращаемся (мы не смену, т.к. не было target-а).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@58670 954022d7-b5bf-4e40-9824-e11837661b57
parent 19412030
...@@ -71,13 +71,12 @@ ...@@ -71,13 +71,12 @@
this.isFillHandleMode = false; this.isFillHandleMode = false;
this.isMoveRangeMode = false; this.isMoveRangeMode = false;
this.isMoveResizeRange = false; this.isMoveResizeRange = false;
this.isMoveResizeChartsRange = false;
// Режим select-а для диалогов // Режим select-а для диалогов
this.isSelectionDialogMode = false; this.isSelectionDialogMode = false;
// Режим формулы // Режим формулы
this.isFormulaEditMode = false; this.isFormulaEditMode = false;
// Режим установки закреплённых областей // Режим установки закреплённых областей
this.isFrozenAnchorMode = false; this.frozenAnchorMode = false;
// Обработчик кликов для граф.объектов // Обработчик кликов для граф.объектов
this.clickCounter = new ClickCounter(); this.clickCounter = new ClickCounter();
...@@ -575,23 +574,23 @@ ...@@ -575,23 +574,23 @@
/** /**
* @param event {MouseEvent} * @param event {MouseEvent}
* @param targetInfo * @param target
*/ */
asc_CEventsController.prototype._moveFrozenAnchorHandle = function (event, targetInfo) { asc_CEventsController.prototype._moveFrozenAnchorHandle = function (event, target) {
var t = this; var t = this;
var coord = t._getCoordinates(event); var coord = t._getCoordinates(event);
t.handlers.trigger("moveFrozenAnchorHandle", coord.x, coord.y, targetInfo); t.handlers.trigger("moveFrozenAnchorHandle", coord.x, coord.y, target);
}; };
/** /**
* @param event {MouseEvent} * @param event {MouseEvent}
* @param targetInfo * @param target
*/ */
asc_CEventsController.prototype._moveFrozenAnchorHandleDone = function (event, targetInfo) { asc_CEventsController.prototype._moveFrozenAnchorHandleDone = function (event, target) {
// Закрепляем область // Закрепляем область
var t = this; var t = this;
var coord = t._getCoordinates(event); var coord = t._getCoordinates(event);
t.handlers.trigger("moveFrozenAnchorHandleDone", coord.x, coord.y, targetInfo); t.handlers.trigger("moveFrozenAnchorHandleDone", coord.x, coord.y, target);
}; };
/** /**
...@@ -1049,8 +1048,8 @@ ...@@ -1049,8 +1048,8 @@
this.vsbApi.mouseDown ? this.vsbApi.evt_mousemove.call(this.vsbApi,event) : false; this.vsbApi.mouseDown ? this.vsbApi.evt_mousemove.call(this.vsbApi,event) : false;
// Режим установки закреплённых областей // Режим установки закреплённых областей
if (this.isFrozenAnchorMode) { if (this.frozenAnchorMode) {
this._moveFrozenAnchorHandle(event, { target: this.isFrozenAnchorMode }); this._moveFrozenAnchorHandle(event, this.frozenAnchorMode);
return true; return true;
} }
...@@ -1102,13 +1101,12 @@ ...@@ -1102,13 +1101,12 @@
if (this.isMoveResizeRange) { if (this.isMoveResizeRange) {
this.isMoveResizeRange = false; this.isMoveResizeRange = false;
this.isMoveResizeChartsRange = false;
this.handlers.trigger("moveResizeRangeHandleDone", this.targetInfo); this.handlers.trigger("moveResizeRangeHandleDone", this.targetInfo);
} }
// Режим установки закреплённых областей // Режим установки закреплённых областей
if (this.isFrozenAnchorMode) { if (this.frozenAnchorMode) {
this._moveFrozenAnchorHandleDone(event, {target: this.isFrozenAnchorMode}); this._moveFrozenAnchorHandleDone(event, this.frozenAnchorMode);
this.isFrozenAnchorMode = false; this.frozenAnchorMode = false;
} }
// Мы можем dblClick и не отработать, если вышли из области и отпустили кнопку мыши, нужно отработать // Мы можем dblClick и не отработать, если вышли из области и отпустили кнопку мыши, нужно отработать
...@@ -1249,14 +1247,13 @@ ...@@ -1249,14 +1247,13 @@
t._commentCellClick(event); t._commentCellClick(event);
} else if ( t.targetInfo && t.targetInfo.target === c_oTargetType.MoveResizeRange && false === this.settings.isViewerMode ){ } else if ( t.targetInfo && t.targetInfo.target === c_oTargetType.MoveResizeRange && false === this.settings.isViewerMode ){
this.isMoveResizeRange = true; this.isMoveResizeRange = true;
this.isMoveResizeChartsRange = true;
t._moveResizeRangeHandle(event, t.targetInfo); t._moveResizeRangeHandle(event, t.targetInfo);
return; return;
} else if (t.targetInfo && (t.targetInfo.target === c_oTargetType.FrozenAnchorV || } else if (t.targetInfo && (t.targetInfo.target === c_oTargetType.FrozenAnchorV ||
t.targetInfo.target === c_oTargetType.FrozenAnchorH) && false === this.settings.isViewerMode) { t.targetInfo.target === c_oTargetType.FrozenAnchorH) && false === this.settings.isViewerMode) {
// Режим установки закреплённых областей // Режим установки закреплённых областей
this.isFrozenAnchorMode = t.targetInfo.target; this.frozenAnchorMode = t.targetInfo.target;
t._moveFrozenAnchorHandle(event, t.targetInfo); t._moveFrozenAnchorHandle(event, this.frozenAnchorMode);
return; return;
} }
} }
...@@ -1358,14 +1355,13 @@ ...@@ -1358,14 +1355,13 @@
if (this.isMoveResizeRange) { if (this.isMoveResizeRange) {
this.isMoveResizeRange = false; this.isMoveResizeRange = false;
this.isMoveResizeChartsRange = false;
this._moveResizeRangeHandleDone(event, this.targetInfo); this._moveResizeRangeHandleDone(event, this.targetInfo);
return true; return true;
} }
// Режим установки закреплённых областей // Режим установки закреплённых областей
if (this.isFrozenAnchorMode) { if (this.frozenAnchorMode) {
this.isFrozenAnchorMode = false; this._moveFrozenAnchorHandleDone(event, this.frozenAnchorMode);
this._moveFrozenAnchorHandleDone(event, this.targetInfo); this.frozenAnchorMode = false;
} }
// Мы можем dblClick и не отработать, если вышли из области и отпустили кнопку мыши, нужно отработать // Мы можем dblClick и не отработать, если вышли из области и отпустили кнопку мыши, нужно отработать
...@@ -1415,8 +1411,8 @@ ...@@ -1415,8 +1411,8 @@
} }
// Режим установки закреплённых областей // Режим установки закреплённых областей
if (t.isFrozenAnchorMode) { if (t.frozenAnchorMode) {
t._moveFrozenAnchorHandle(event, this.targetInfo); t._moveFrozenAnchorHandle(event, this.frozenAnchorMode);
return true; return true;
} }
...@@ -1453,7 +1449,7 @@ ...@@ -1453,7 +1449,7 @@
/** @param event {MouseEvent} */ /** @param event {MouseEvent} */
asc_CEventsController.prototype._onMouseWheel = function (event) { asc_CEventsController.prototype._onMouseWheel = function (event) {
if (this.isFillHandleMode || this.isMoveRangeMode || this.isMoveResizeChartsRange || this.isMoveResizeRange) { if (this.isFillHandleMode || this.isMoveRangeMode || this.isMoveResizeRange) {
return true; return true;
} }
var delta = 0; var delta = 0;
......
...@@ -893,15 +893,15 @@ ...@@ -893,15 +893,15 @@
}; };
// Frozen anchor // Frozen anchor
WorkbookView.prototype._onMoveFrozenAnchorHandle = function (x, y, targetInfo) { WorkbookView.prototype._onMoveFrozenAnchorHandle = function (x, y, target) {
var ws = this.getWorksheet(); var ws = this.getWorksheet();
ws.drawFrozenGuides(x, y, targetInfo); ws.drawFrozenGuides(x, y, target);
}; };
WorkbookView.prototype._onMoveFrozenAnchorHandleDone = function (x, y, targetInfo) { WorkbookView.prototype._onMoveFrozenAnchorHandleDone = function (x, y, target) {
// Закрепляем область // Закрепляем область
var ws = this.getWorksheet(); var ws = this.getWorksheet();
ws.applyFrozenAnchor(x, y, targetInfo); ws.applyFrozenAnchor(x, y, target);
}; };
WorkbookView.prototype._onShowAutoComplete = function () { WorkbookView.prototype._onShowAutoComplete = function () {
......
...@@ -2977,9 +2977,9 @@ ...@@ -2977,9 +2977,9 @@
}; };
/** Рисует закрепление областей */ /** Рисует закрепление областей */
WorksheetView.prototype._drawFrozenPaneLines = function (canvas) { WorksheetView.prototype._drawFrozenPaneLines = function (drawingCtx) {
// Возможно стоит отрисовывать на overlay, а не на основной канве // Возможно стоит отрисовывать на overlay, а не на основной канве
var ctx = canvas ? canvas : this.drawingCtx; var ctx = drawingCtx ? drawingCtx : this.drawingCtx;
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Object, null, var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Object, null,
this.model.getId(), c_oAscLockNameFrozenPane); this.model.getId(), c_oAscLockNameFrozenPane);
var isLocked = this.collaborativeEditing.getLockIntersection(lockInfo, var isLocked = this.collaborativeEditing.getLockIntersection(lockInfo,
...@@ -3015,39 +3015,42 @@ ...@@ -3015,39 +3015,42 @@
ctx.stroke(); ctx.stroke();
}; };
WorksheetView.prototype.drawFrozenGuides = function (x, y, targetInfo) { WorksheetView.prototype.drawFrozenGuides = function (x, y, target) {
if (!targetInfo)
return;
var data, offsetFrozen; var data, offsetFrozen;
var ctx = this.overlayCtx; var ctx = this.overlayCtx;
ctx.clear(); ctx.clear();
this._drawSelection(); this._drawSelection();
switch (targetInfo.target) { switch (target) {
case c_oTargetType.FrozenAnchorV: case c_oTargetType.FrozenAnchorV:
x *= asc_getcvt(0/*px*/, 1/*pt*/, this._getPPIX()); x *= asc_getcvt(0/*px*/, 1/*pt*/, this._getPPIX());
data = this._findColUnderCursor(x, true); data = this._findColUnderCursor(x, true, true);
if (data && 0 <= data.col) { if (data) {
var h = ctx.getHeight(); data.col += 1;
var offsetX = this.cols[this.visibleRange.c1].left - this.cellsLeft; if (0 <= data.col && data.col < this.cols.length) {
offsetFrozen = this.getFrozenPaneOffset(false, true); var h = ctx.getHeight();
offsetX -= offsetFrozen.offsetX; var offsetX = this.cols[this.visibleRange.c1].left - this.cellsLeft;
ctx.setFillPattern(this.settings.ptrnLineDotted1) offsetFrozen = this.getFrozenPaneOffset(false, true);
.fillRect(this.cols[data.col].left - offsetX - this.width_1px, 0, this.width_1px, h); offsetX -= offsetFrozen.offsetX;
ctx.setFillPattern(this.settings.ptrnLineDotted1)
.fillRect(this.cols[data.col].left - offsetX - this.width_1px, 0, this.width_1px, h);
}
} }
break; break;
case c_oTargetType.FrozenAnchorH: case c_oTargetType.FrozenAnchorH:
y *= asc_getcvt(0/*px*/, 1/*pt*/, this._getPPIY()); y *= asc_getcvt(0/*px*/, 1/*pt*/, this._getPPIY());
data = this._findRowUnderCursor(y, true); data = this._findRowUnderCursor(y, true, true);
if (data && 0 <= data.row) { if (data) {
var w = ctx.getWidth(); data.row += 1;
var offsetY = this.rows[this.visibleRange.r1].top - this.cellsTop; if (0 <= data.row && data.row < this.rows.length) {
offsetFrozen = this.getFrozenPaneOffset(true, false); var w = ctx.getWidth();
offsetY -= offsetFrozen.offsetY; var offsetY = this.rows[this.visibleRange.r1].top - this.cellsTop;
ctx.setFillPattern(this.settings.ptrnLineDotted1) offsetFrozen = this.getFrozenPaneOffset(true, false);
.fillRect(0, this.rows[data.row].top - offsetY - this.height_1px, w, this.height_1px); offsetY -= offsetFrozen.offsetY;
ctx.setFillPattern(this.settings.ptrnLineDotted1)
.fillRect(0, this.rows[data.row].top - offsetY - this.height_1px, w, this.height_1px);
}
} }
break; break;
} }
...@@ -3093,10 +3096,7 @@ ...@@ -3093,10 +3096,7 @@
return result; return result;
}; };
WorksheetView.prototype.applyFrozenAnchor = function(x, y, targetInfo) { WorksheetView.prototype.applyFrozenAnchor = function(x, y, target) {
if (!targetInfo)
return;
var t = this; var t = this;
var onChangeFrozenCallback = function (isSuccess) { var onChangeFrozenCallback = function (isSuccess) {
if (false === isSuccess) { if (false === isSuccess) {
...@@ -3109,18 +3109,24 @@ ...@@ -3109,18 +3109,24 @@
lastCol = t.topLeftFrozenCell.getCol0(); lastCol = t.topLeftFrozenCell.getCol0();
lastRow = t.topLeftFrozenCell.getRow0(); lastRow = t.topLeftFrozenCell.getRow0();
} }
switch (targetInfo.target) { switch (target) {
case c_oTargetType.FrozenAnchorV: case c_oTargetType.FrozenAnchorV:
x *= asc_getcvt(0/*px*/, 1/*pt*/, t._getPPIX()); x *= asc_getcvt(0/*px*/, 1/*pt*/, t._getPPIX());
data = t._findColUnderCursor(x, true); data = t._findColUnderCursor(x, true, true);
if (data && 0 <= data.col) if (data) {
lastCol = data.col; data.col += 1;
if (0 <= data.col && data.col < t.cols.length)
lastCol = data.col;
}
break; break;
case c_oTargetType.FrozenAnchorH: case c_oTargetType.FrozenAnchorH:
y *= asc_getcvt(0/*px*/, 1/*pt*/, t._getPPIY()); y *= asc_getcvt(0/*px*/, 1/*pt*/, t._getPPIY());
data = t._findRowUnderCursor(y, true); data = t._findRowUnderCursor(y, true, true);
if (data && 0 <= data.row) if (data) {
lastRow = data.row; data.row += 1;
if (0 <= data.row && data.row < t.rows.length)
lastRow = data.row;
}
break; break;
} }
t._updateFreezePane(lastCol, lastRow); t._updateFreezePane(lastCol, lastRow);
......
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