Commit 13df0633 authored by Sergey.Konovalov's avatar Sergey.Konovalov Committed by Alexander.Trofimov

Bug 25916 - [CoEdit] Лист не отображается как активный при передаче данных...

Bug 25916 - [CoEdit] Лист не отображается как активный при передаче данных второму пользователю после Hide Sheet.
Bug 25654 - Фокус не возвращается на лист книги, восстановленный с помощью redo.
В историю сохраняется sheet для undo и redo, не меняем sheet в совместном редактировании.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@57810 954022d7-b5bf-4e40-9824-e11837661b57
parent ef62fee9
......@@ -367,10 +367,16 @@ CHistory.prototype.UndoRedoEnd = function (Point, oRedoObjectParam, bUndo) {
oState = bUndo ? Point.SelectionState : ((this.Index === this.Points.length - 1) ?
this.LastState : this.Points[this.Index + 1].SelectionState);
if (this.workbook.bCollaborativeChanges) {
//active может поменяться только при remove, hide листов
this.workbook.handlers.trigger('showWorksheet', this.workbook.getActive());
}
else {
// ToDo какое-то не очень решение брать 0-й элемент и у него получать индекс!
var nSheetId = (null !== oState) ? oState[0].worksheetId : Point.nLastSheetId;
var nSheetId = (null !== oState) ? oState[0].worksheetId : ((this.workbook.bRedoChanges && null != Point.RedoSheetId) ? Point.RedoSheetId : Point.UndoSheetId);
if (null !== nSheetId)
this.workbook.handlers.trigger('showWorksheet', nSheetId);
}
for (i in Point.UpdateRigions)
this.workbook.handlers.trigger("cleanCellCache", i, Point.UpdateRigions[i], false, true);
......@@ -586,18 +592,19 @@ CHistory.prototype.Create_NewPoint = function()
var Items = [];
var UpdateRigions = {};
var Time = new Date().getTime();
var nLastSheetId = null, oSelectionState = this.workbook.handlers.trigger("getSelectionState");
var UndoSheetId = null, oSelectionState = this.workbook.handlers.trigger("getSelectionState");
// ToDo Берем всегда, т.к. в случае с LastState мы можем не попасть на нужный лист и не заселектить нужный диапазон!
var oSelectRange = this.workbook.handlers.trigger("getSelection");
var wsActive = this.workbook.getWorksheet(this.workbook.getActive());
if (wsActive)
nLastSheetId = wsActive.getId();
UndoSheetId = wsActive.getId();
this.CurPoint = {
Items : Items, // Массив изменений, начиная с текущего момента
UpdateRigions : UpdateRigions,
nLastSheetId : nLastSheetId,
UndoSheetId: UndoSheetId,
RedoSheetId: null,
SelectRange : oSelectRange,
SelectRangeRedo : oSelectRange,
Time : Time, // Текущее время
......@@ -652,7 +659,7 @@ CHistory.prototype.Add = function(Class, Type, sheetid, range, Data, LocalChange
Item.LocalChange = LocalChange;
oCurPoint.Items.push( Item );
if(null != range)
if (null != range && null != sheetid)
{
var updateRange = oCurPoint.UpdateRigions[sheetid];
if(null != updateRange)
......@@ -662,7 +669,7 @@ CHistory.prototype.Add = function(Class, Type, sheetid, range, Data, LocalChange
oCurPoint.UpdateRigions[sheetid] = updateRange;
}
if (null != sheetid)
oCurPoint.nLastSheetId = sheetid;
oCurPoint.UndoSheetId = sheetid;
if(1 == oCurPoint.Items.length)
this._sendCanUndoRedo();
};
......@@ -720,6 +727,22 @@ CHistory.prototype.GetSelectionRedo = function()
oRes = this.CurPoint.SelectRangeRedo;
return oRes;
};
CHistory.prototype.SetSheetRedo = function (sheetId) {
if (0 !== this.TurnOffHistory)
return;
if (null == this.CurPoint)
return;
this.CurPoint.RedoSheetId = sheetId;
};
CHistory.prototype.SetSheetUndo = function (sheetId) {
if (0 !== this.TurnOffHistory)
return;
if (null == this.CurPoint)
return;
this.CurPoint.UndoSheetId = sheetId;
};
CHistory.prototype.TurnOff = function()
{
this.TurnOffHistory++;
......
......@@ -2685,7 +2685,7 @@ UndoRedoWorkbook.prototype = {
}
else if(historyitem_Workbook_SheetPositions == Type)
{
var wsActive = this.wb.aWorksheets[this.wb.nActive];
var wsActive = this.wb.getActiveWs();
//делаем вспомогательным map из sheetid
var oTempSheetMap = {};
for(var i = 0, length = Data.positions.length; i < length; ++i)
......@@ -2744,8 +2744,7 @@ UndoRedoWorkbook.prototype = {
if(bEmpty)
break;
}
this.wb._updateWorksheetIndexes();
this.wb.nActive = wsActive.getIndex();
this.wb._updateWorksheetIndexes(wsActive);
}
else if(historyitem_Workbook_ChangeColorScheme == Type)
{
......
This diff is collapsed.
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