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; ...@@ -1667,7 +1667,7 @@ var maxIndividualValues = 10000;
} }
}, },
_moveAutoFilters: function(arnTo, arnFrom, data, copyRange) _moveAutoFilters: function(arnTo, arnFrom, data, copyRange, offLock)
{ {
//проверяем покрывает ли диапазон хотя бы один автофильтр //проверяем покрывает ли диапазон хотя бы один автофильтр
var ws = this.worksheet; var ws = this.worksheet;
...@@ -1687,11 +1687,11 @@ var maxIndividualValues = 10000; ...@@ -1687,11 +1687,11 @@ var maxIndividualValues = 10000;
if(copyRange) if(copyRange)
{ {
this._cloneCtrlAutoFilters(arnTo, arnFrom); this._cloneCtrlAutoFilters(arnTo, arnFrom, offLock);
} }
else else
{ {
var findFilters = this._searchFiltersInRange(arnFrom , aWs); var findFilters = this._searchFiltersInRange(arnFrom);
if(findFilters) if(findFilters)
{ {
var diffCol = arnTo.c1 - arnFrom.c1; var diffCol = arnTo.c1 - arnFrom.c1;
...@@ -4163,7 +4163,7 @@ var maxIndividualValues = 10000; ...@@ -4163,7 +4163,7 @@ var maxIndividualValues = 10000;
if(!copyRange) if(!copyRange)
{ {
var findFilters = this._searchFiltersInRange(arnFrom , aWs); var findFilters = this._searchFiltersInRange(arnFrom);
if(findFilters) if(findFilters)
{ {
for(var i = 0; i < findFilters.length; i++) for(var i = 0; i < findFilters.length; i++)
...@@ -4191,7 +4191,7 @@ var maxIndividualValues = 10000; ...@@ -4191,7 +4191,7 @@ var maxIndividualValues = 10000;
} }
//TODO пока будем всегда чистить фильтры, которые будут в месте вставки. Позже сделать аналогично MS либо пересмотреть все возможные ситуации. //TODO пока будем всегда чистить фильтры, которые будут в месте вставки. Позже сделать аналогично MS либо пересмотреть все возможные ситуации.
var findFiltersTo = this._searchFiltersInRange(arnTo , aWs); var findFiltersTo = this._searchFiltersInRange(arnTo);
if(arnTo && findFiltersTo) if(arnTo && findFiltersTo)
{ {
for(var i = 0; i < findFiltersTo.length; i++) for(var i = 0; i < findFiltersTo.length; i++)
...@@ -4226,35 +4226,33 @@ var maxIndividualValues = 10000; ...@@ -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 result = [];
var rangeFilter; var aWs = this._getCurrentWS();
//var range = this._getAscRange(range); range = Asc.Range(range.c1, range.r1, range.c2, range.r2);
if(aWs.AutoFilter)
{ 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; result[result.length] = aWs.AutoFilter;
} }
}
if(aWs.TableParts) 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])
{ {
rangeFilter = aWs.TableParts[k].Ref; if(aWs.TableParts[i])
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) if(!result.length)
result = false; result = false;
return result; return result;
}, },
...@@ -4304,10 +4302,10 @@ var maxIndividualValues = 10000; ...@@ -4304,10 +4302,10 @@ var maxIndividualValues = 10000;
return result; return result;
}, },
_cloneCtrlAutoFilters: function(arnTo, arnFrom) _cloneCtrlAutoFilters: function(arnTo, arnFrom, offLock)
{ {
var aWs = this._getCurrentWS(); var aWs = this._getCurrentWS();
var findFilters = this._searchFiltersInRange(arnFrom , aWs); var findFilters = this._searchFiltersInRange(arnFrom);
if(findFilters && findFilters.length) if(findFilters && findFilters.length)
{ {
...@@ -4324,7 +4322,7 @@ var maxIndividualValues = 10000; ...@@ -4324,7 +4322,7 @@ var maxIndividualValues = 10000;
bWithoutFilter = findFilters[i].AutoFilter === null; bWithoutFilter = findFilters[i].AutoFilter === null;
if(!ref.intersection(newRange) && !this._intersectionRangeWithTableParts(newRange, aWs, arnFrom)) 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,11 +7920,16 @@ ...@@ -7920,11 +7920,16 @@
WorksheetView.prototype.moveRangeHandle = function (arnFrom, arnTo, copyRange){ WorksheetView.prototype.moveRangeHandle = function (arnFrom, arnTo, copyRange){
var t = this; var t = this;
var onApplyMoveRangeHandleCallback = function (isSuccess) { var onApplyMoveRangeHandleCallback = function (isSuccess) {
if (false === isSuccess || false === t.autoFilters.isCheckMoveRange(arnFrom)) { if (false === isSuccess) {
t._cleanSelectionMoveRange(); t._cleanSelectionMoveRange();
return; return;
} }
var onApplyMoveAutoFiltersCallback = function(isSuccess)
{
if (false === isSuccess)
return;
// Очищаем выделение // Очищаем выделение
t.cleanSelection(); t.cleanSelection();
...@@ -7940,7 +7945,7 @@ ...@@ -7940,7 +7945,7 @@
t.cellCommentator.moveRangeComments(arnFrom, arnTo); t.cellCommentator.moveRangeComments(arnFrom, arnTo);
t.objectRender.moveRangeDrawingObject(arnFrom, arnTo); t.objectRender.moveRangeDrawingObject(arnFrom, arnTo);
t.autoFilters._moveAutoFilters(arnTo, arnFrom, null, copyRange); t.autoFilters._moveAutoFilters(arnTo, arnFrom, null, copyRange, true);
// Вызываем функцию пересчета для заголовков форматированной таблицы // Вызываем функцию пересчета для заголовков форматированной таблицы
t.autoFilters.renameTableColumn(arnFrom); t.autoFilters.renameTableColumn(arnFrom);
t.autoFilters.renameTableColumn(arnTo); t.autoFilters.renameTableColumn(arnTo);
...@@ -7959,9 +7964,18 @@ ...@@ -7959,9 +7964,18 @@
// Вызовем на всякий случай, т.к. мы можем уже обновиться из-за формул ToDo возможно стоит убрать это в дальнейшем (но нужна переработка формул) - http://bugzserver/show_bug.cgi?id=24505 // Вызовем на всякий случай, т.к. мы можем уже обновиться из-за формул ToDo возможно стоит убрать это в дальнейшем (но нужна переработка формул) - http://bugzserver/show_bug.cgi?id=24505
t._updateSelectionNameAndInfo(); t._updateSelectionNameAndInfo();
}
if(t.autoFilters._searchFiltersInRange(arnFrom))
t._isLockedAll(onApplyMoveAutoFiltersCallback);
else
onApplyMoveAutoFiltersCallback();
}; };
if(t.autoFilters.isCheckMoveRange(arnFrom))
this._isLockedCells([arnFrom, arnTo], null, onApplyMoveRangeHandleCallback); this._isLockedCells([arnFrom, arnTo], null, onApplyMoveRangeHandleCallback);
else
this._cleanSelectionMoveRange();
}; };
WorksheetView.prototype.emptySelection = function (options) { 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