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