Commit 3c49a397 authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Переделана функция отсылки изменений с учетом новой схемы сохранения. Теперь...

Переделана функция отсылки изменений с учетом новой схемы сохранения. Теперь вместе с изменениями посылается и точка последнего сохранения.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@56537 954022d7-b5bf-4e40-9824-e11837661b57
parent b5703564
......@@ -743,7 +743,7 @@ function CCollaborativeEditing()
this.OnStart_Load_Objects();
};
this.Send_Changes = function()
this.Send_Changes2 = function()
{
// Пересчитываем позиции
this.Refresh_DCChanges();
......@@ -805,6 +805,74 @@ function CCollaborativeEditing()
editor.WordControl.m_oLogicDocument.DrawingDocument.FirePaint();
};
this.Send_Changes = function()
{
// Пересчитываем позиции
this.Refresh_DCChanges();
// Генерируем свои изменения
var StartPoint = History.SavedIndex + 1;
var LastPoint = -1;
if ( true === this.m_bUse )
{
// (ненужные точки предварительно удаляем)
History.Clear_Redo();
LastPoint = History.Points.length - 1;
}
else
{
LastPoint = History.Index + 1;
}
var aChanges = new Array();
for ( var PointIndex = StartPoint; PointIndex < LastPoint; PointIndex++ )
{
var Point = History.Points[PointIndex];
for ( var Index = 0; Index < Point.Items.length; Index++ )
{
var Item = Point.Items[Index];
var oChanges = new CCollaborativeChanges();
oChanges.Set_FromUndoRedo( Item.Class, Item.Data, Item.Binary );
var oChanges2 = new Object();
oChanges2["Id"] = oChanges.m_sId;
oChanges2["Data"] = oChanges.m_pData;
aChanges.push( oChanges2 );
}
}
this.Release_Locks();
var UnlockCount2 = this.m_aNeedUnlock2.length;
for ( var Index = 0; Index < UnlockCount2; Index++ )
{
var Class = this.m_aNeedUnlock2[Index];
Class.Lock.Set_Type( locktype_None, false);
editor.CoAuthoringApi.releaseLocks( Class.Get_Id() );
}
this.m_aNeedUnlock.length = 0;
this.m_aNeedUnlock2.length = 0;
editor.CoAuthoringApi.saveChanges(aChanges, StartPoint);
// Чистим Undo/Redo только во время совместного редактирования
if ( true === this.m_bUse )
History.Clear();
// Обновляем точку последнего сохранения в истории
History.Reset_SavedIndex();
// Обновляем интерфейс
editor.WordControl.m_oLogicDocument.Document_UpdateInterfaceState();
editor.WordControl.m_oLogicDocument.Document_UpdateUndoRedoState();
// Перерисовываем документ (для обновления локов)
editor.WordControl.m_oLogicDocument.DrawingDocument.ClearCachePages();
editor.WordControl.m_oLogicDocument.DrawingDocument.FirePaint();
};
this.Release_Locks = function()
{
var UnlockCount = this.m_aNeedUnlock.length;
......
......@@ -127,6 +127,9 @@ CHistory.prototype =
Create_NewPoint : function()
{
if ( this.Index < this.SavedIndex )
this.SavedIndex = this.Index;
this.Clear_Additional();
this.Check_UninonLastPoints();
......@@ -318,9 +321,12 @@ CHistory.prototype =
Check_UninonLastPoints : function()
{
// Не объединяем точки истории, если на предыдущей точке произошло сохранение
if ( this.Points.length < 2 || this.SavedIndex >= this.Points.length - 2 )
if ( this.Points.length < 2 )
return;
if ( this.Index < this.SavedIndex )
this.SavedIndex = this.Index;
var Point1 = this.Points[this.Points.length - 2];
var Point2 = this.Points[this.Points.length - 1];
......
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