Commit 22d4af97 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@66853 954022d7-b5bf-4e40-9824-e11837661b57
parent 5fa4d1f1
......@@ -2936,7 +2936,14 @@ ParaMath.prototype.Set_ReviewType = function(ReviewType, RemovePrChange)
{
return this.Root.Set_ReviewType(ReviewType, RemovePrChange);
};
ParaMath.prototype.Set_ContentSelection = function(StartDocPos, EndDocPos, Depth, StartFlag, EndFlag)
{
return this.Root.Set_ContentSelection(StartDocPos, EndDocPos, Depth, StartFlag, EndFlag);
};
ParaMath.prototype.Set_ContentPosition = function(DocPos, Depth, Flag)
{
return this.Root.Set_ContentPosition(DocPos, Depth, Flag);
};
//----------------------------------------------------------------------------------------------------------------------
// Классы с изменениями
//----------------------------------------------------------------------------------------------------------------------
......
......@@ -573,6 +573,9 @@ CParagraphContentWithParagraphLikeContent.prototype.Remove_FromContent = functio
else if (this.State.Selection.EndPos > Pos)
this.State.Selection.EndPos = Pos;
}
this.Selection.StartPos = Math.min(this.Content.length - 1, Math.max(0, this.Selection.StartPos));
this.Selection.EndPos = Math.min(this.Content.length - 1, Math.max(0, this.Selection.EndPos));
}
// Также передвинем всем метки переносов страниц и строк
......@@ -2055,6 +2058,11 @@ CParagraphContentWithParagraphLikeContent.prototype.Set_ContentPosition = functi
}
this.State.ContentPos = Math.max(0, Math.min(this.Content.length - 1, Pos));
// TODO: Как только в CMathContent CurPos перейдет на стандартное this.State.ContentPos убрать эту проверку
if (this.CurPos)
this.CurPos = this.State.ContentPos;
if (this.Content[Pos] && this.Content[Pos].Set_ContentPosition)
this.Content[Pos].Set_ContentPosition(_DocPos, Depth + 1, _Flag);
else
......
......@@ -10491,8 +10491,8 @@ ParaRun.prototype.Get_DocumentPositionFromObject = function(PosArray)
while (Depth > 0)
{
var Pos = ParaContentPos.Get(Depth);
var Class = this.Get_ElementByPos(ParaContentPos);
ParaContentPos.Decrease_Depth(1);
var Class = this.Paragraph.Get_ElementByPos(ParaContentPos);
Depth--;
PosArray.splice(0, 0, {Class : Class, Position : Pos});
......
......@@ -1739,6 +1739,9 @@ CMathContent.prototype.private_UpdatePosOnRemove = function(Pos, Count)
else if (this.Selection.EndPos > Pos)
this.Selection.EndPos = Pos;
}
this.Selection.StartPos = Math.min(this.Content.length - 1, Math.max(0, this.Selection.StartPos));
this.Selection.EndPos = Math.min(this.Content.length - 1, Math.max(0, this.Selection.EndPos));
}
// Обновляем позиции в NearestPos
......@@ -1993,7 +1996,10 @@ CMathContent.prototype.Load_Changes = function(Reader)
var Element = g_oTableId.Get_ById( Reader.GetString2() );
if ( null != Element )
{
this.Content.splice(Pos, 0, Element);
CollaborativeEditing.Update_DocumentPositionsOnAdd(this, Pos);
}
}
break;
......@@ -2009,6 +2015,7 @@ CMathContent.prototype.Load_Changes = function(Reader)
{
var ChangesPos = Reader.GetLong();
this.Content.splice(ChangesPos, 1);
CollaborativeEditing.Update_DocumentPositionsOnRemove(this, ChangesPos, 1);
}
break;
......
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