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