Commit b8faa097 authored by Igor.Zotov's avatar Igor.Zotov Committed by Alexander.Trofimov

http://bugzserver/show_bug.cgi?id=29974 - [CoEdit][Undo] Не происходит отмены...

http://bugzserver/show_bug.cgi?id=29974 -  [CoEdit][Undo] Не происходит отмены вставки форматированной таблицы при ее копировании через зажатый Ctrl

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@64336 954022d7-b5bf-4e40-9824-e11837661b57
parent 3859c861
......@@ -1667,7 +1667,7 @@ var maxIndividualValues = 10000;
}
},
_moveAutoFilters: function(arnTo, arnFrom, data, copyRange)
_moveAutoFilters: function(arnTo, arnFrom, data, copyRange, offLock)
{
//проверяем покрывает ли диапазон хотя бы один автофильтр
var ws = this.worksheet;
......@@ -1687,11 +1687,11 @@ var maxIndividualValues = 10000;
if(copyRange)
{
this._cloneCtrlAutoFilters(arnTo, arnFrom);
this._cloneCtrlAutoFilters(arnTo, arnFrom, offLock);
}
else
{
var findFilters = this._searchFiltersInRange(arnFrom , aWs);
var findFilters = this._searchFiltersInRange(arnFrom);
if(findFilters)
{
var diffCol = arnTo.c1 - arnFrom.c1;
......@@ -4163,7 +4163,7 @@ var maxIndividualValues = 10000;
if(!copyRange)
{
var findFilters = this._searchFiltersInRange(arnFrom , aWs);
var findFilters = this._searchFiltersInRange(arnFrom);
if(findFilters)
{
for(var i = 0; i < findFilters.length; i++)
......@@ -4191,7 +4191,7 @@ var maxIndividualValues = 10000;
}
//TODO пока будем всегда чистить фильтры, которые будут в месте вставки. Позже сделать аналогично MS либо пересмотреть все возможные ситуации.
var findFiltersTo = this._searchFiltersInRange(arnTo , aWs);
var findFiltersTo = this._searchFiltersInRange(arnTo);
if(arnTo && findFiltersTo)
{
for(var i = 0; i < findFiltersTo.length; i++)
......@@ -4226,35 +4226,33 @@ var maxIndividualValues = 10000;
}
},
_searchFiltersInRange: function(range, aWs)//find filters in this range
_searchFiltersInRange: function(range, bFindOnlyTableParts)//find filters in this range
{
var result = [];
var rangeFilter;
//var range = this._getAscRange(range);
if(aWs.AutoFilter)
var aWs = this._getCurrentWS();
range = Asc.Range(range.c1, range.r1, range.c2, range.r2);
if(aWs.AutoFilter && !bFindOnlyTableParts)
{
rangeFilter = aWs.AutoFilter.Ref;
if(range.c1 <= rangeFilter.c1 && range.r1 <= rangeFilter.r1 && range.c2 >= rangeFilter.c2 && range.r2 >= rangeFilter.r2)
{
if(range.containsRange(aWs.AutoFilter.Ref))
result[result.length] = aWs.AutoFilter;
}
}
if(aWs.TableParts)
{
for(var k = 0; k < aWs.TableParts.length; k++)
for(var i = 0; i < aWs.TableParts.length; i++)
{
if(aWs.TableParts[k])
if(aWs.TableParts[i])
{
rangeFilter = aWs.TableParts[k].Ref;
if(range.c1 <= rangeFilter.c1 && range.r1 <= rangeFilter.r1 && range.c2 >= rangeFilter.c2 && range.r2 >= rangeFilter.r2)
{
result[result.length] = aWs.TableParts[k];
}
if(range.containsRange(aWs.TableParts[i].Ref))
result[result.length] = aWs.TableParts[i];
}
}
}
if(!result.length)
result = false;
return result;
},
......@@ -4304,10 +4302,10 @@ var maxIndividualValues = 10000;
return result;
},
_cloneCtrlAutoFilters: function(arnTo, arnFrom)
_cloneCtrlAutoFilters: function(arnTo, arnFrom, offLock)
{
var aWs = this._getCurrentWS();
var findFilters = this._searchFiltersInRange(arnFrom , aWs);
var findFilters = this._searchFiltersInRange(arnFrom);
if(findFilters && findFilters.length)
{
......@@ -4324,7 +4322,7 @@ var maxIndividualValues = 10000;
bWithoutFilter = findFilters[i].AutoFilter === null;
if(!ref.intersection(newRange) && !this._intersectionRangeWithTableParts(newRange, aWs, arnFrom))
this.addAutoFilter(findFilters[i].TableStyleInfo.Name, newRange);
this.addAutoFilter(findFilters[i].TableStyleInfo.Name, newRange, null, offLock);
}
}
}
......
......@@ -7920,48 +7920,62 @@
WorksheetView.prototype.moveRangeHandle = function (arnFrom, arnTo, copyRange){
var t = this;
var onApplyMoveRangeHandleCallback = function (isSuccess) {
if (false === isSuccess || false === t.autoFilters.isCheckMoveRange(arnFrom)) {
if (false === isSuccess) {
t._cleanSelectionMoveRange();
return;
}
// Очищаем выделение
t.cleanSelection();
//ToDo t.cleanDepCells();
History.Create_NewPoint();
History.SetSelection(arnFrom.clone());
History.SetSelectionRedo(arnTo.clone());
History.StartTransaction();
t.autoFilters._preMoveAutoFilters(arnFrom, arnTo, copyRange);
t.model._moveRange(arnFrom, arnTo, copyRange);
t.cellCommentator.moveRangeComments(arnFrom, arnTo);
t.objectRender.moveRangeDrawingObject(arnFrom, arnTo);
var onApplyMoveAutoFiltersCallback = function(isSuccess)
{
if (false === isSuccess)
return;
// Очищаем выделение
t.cleanSelection();
t.autoFilters._moveAutoFilters(arnTo, arnFrom, null, copyRange);
// Вызываем функцию пересчета для заголовков форматированной таблицы
t.autoFilters.renameTableColumn(arnFrom);
t.autoFilters.renameTableColumn(arnTo);
t.autoFilters.reDrawFilter(arnFrom);
//ToDo t.cleanDepCells();
History.Create_NewPoint();
History.SetSelection(arnFrom.clone());
History.SetSelectionRedo(arnTo.clone());
History.StartTransaction();
t.autoFilters._preMoveAutoFilters(arnFrom, arnTo, copyRange);
t.model._moveRange(arnFrom, arnTo, copyRange);
t.cellCommentator.moveRangeComments(arnFrom, arnTo);
t.objectRender.moveRangeDrawingObject(arnFrom, arnTo);
t.autoFilters._moveAutoFilters(arnTo, arnFrom, null, copyRange, true);
// Вызываем функцию пересчета для заголовков форматированной таблицы
t.autoFilters.renameTableColumn(arnFrom);
t.autoFilters.renameTableColumn(arnTo);
t.autoFilters.reDrawFilter(arnFrom);
History.EndTransaction();
History.EndTransaction();
t._updateCellsRange(arnTo, false, true);
t.activeRange = arnTo.clone(true);
// Сбрасываем параметры
t.activeMoveRange = null;
t.startCellMoveRange = null;
t._updateCellsRange(arnFrom, false, true);
// Тут будет отрисовка select-а
t._recalculateAfterUpdate([arnFrom, arnTo]);
// Вызовем на всякий случай, т.к. мы можем уже обновиться из-за формул ToDo возможно стоит убрать это в дальнейшем (но нужна переработка формул) - http://bugzserver/show_bug.cgi?id=24505
t._updateSelectionNameAndInfo();
};
t._updateCellsRange(arnTo, false, true);
t.activeRange = arnTo.clone(true);
// Сбрасываем параметры
t.activeMoveRange = null;
t.startCellMoveRange = null;
t._updateCellsRange(arnFrom, false, true);
// Тут будет отрисовка select-а
t._recalculateAfterUpdate([arnFrom, arnTo]);
this._isLockedCells([arnFrom, arnTo], null, onApplyMoveRangeHandleCallback);
// Вызовем на всякий случай, т.к. мы можем уже обновиться из-за формул ToDo возможно стоит убрать это в дальнейшем (но нужна переработка формул) - http://bugzserver/show_bug.cgi?id=24505
t._updateSelectionNameAndInfo();
}
if(t.autoFilters._searchFiltersInRange(arnFrom))
t._isLockedAll(onApplyMoveAutoFiltersCallback);
else
onApplyMoveAutoFiltersCallback();
};
if(t.autoFilters.isCheckMoveRange(arnFrom))
this._isLockedCells([arnFrom, arnTo], null, onApplyMoveRangeHandleCallback);
else
this._cleanSelectionMoveRange();
};
WorksheetView.prototype.emptySelection = function (options) {
......
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