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) ...@@ -2936,7 +2936,14 @@ ParaMath.prototype.Set_ReviewType = function(ReviewType, RemovePrChange)
{ {
return this.Root.Set_ReviewType(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 ...@@ -573,6 +573,9 @@ CParagraphContentWithParagraphLikeContent.prototype.Remove_FromContent = functio
else if (this.State.Selection.EndPos > Pos) else if (this.State.Selection.EndPos > Pos)
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 ...@@ -2055,6 +2058,11 @@ CParagraphContentWithParagraphLikeContent.prototype.Set_ContentPosition = functi
} }
this.State.ContentPos = Math.max(0, Math.min(this.Content.length - 1, Pos)); 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) if (this.Content[Pos] && this.Content[Pos].Set_ContentPosition)
this.Content[Pos].Set_ContentPosition(_DocPos, Depth + 1, _Flag); this.Content[Pos].Set_ContentPosition(_DocPos, Depth + 1, _Flag);
else else
......
...@@ -10491,8 +10491,8 @@ ParaRun.prototype.Get_DocumentPositionFromObject = function(PosArray) ...@@ -10491,8 +10491,8 @@ ParaRun.prototype.Get_DocumentPositionFromObject = function(PosArray)
while (Depth > 0) while (Depth > 0)
{ {
var Pos = ParaContentPos.Get(Depth); var Pos = ParaContentPos.Get(Depth);
var Class = this.Get_ElementByPos(ParaContentPos);
ParaContentPos.Decrease_Depth(1); ParaContentPos.Decrease_Depth(1);
var Class = this.Paragraph.Get_ElementByPos(ParaContentPos);
Depth--; Depth--;
PosArray.splice(0, 0, {Class : Class, Position : Pos}); PosArray.splice(0, 0, {Class : Class, Position : Pos});
......
...@@ -1739,6 +1739,9 @@ CMathContent.prototype.private_UpdatePosOnRemove = function(Pos, Count) ...@@ -1739,6 +1739,9 @@ CMathContent.prototype.private_UpdatePosOnRemove = function(Pos, Count)
else if (this.Selection.EndPos > Pos) else if (this.Selection.EndPos > Pos)
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 // Обновляем позиции в NearestPos
...@@ -1993,7 +1996,10 @@ CMathContent.prototype.Load_Changes = function(Reader) ...@@ -1993,7 +1996,10 @@ CMathContent.prototype.Load_Changes = function(Reader)
var Element = g_oTableId.Get_ById( Reader.GetString2() ); var Element = g_oTableId.Get_ById( Reader.GetString2() );
if ( null != Element ) if ( null != Element )
{
this.Content.splice(Pos, 0, Element); this.Content.splice(Pos, 0, Element);
CollaborativeEditing.Update_DocumentPositionsOnAdd(this, Pos);
}
} }
break; break;
...@@ -2009,6 +2015,7 @@ CMathContent.prototype.Load_Changes = function(Reader) ...@@ -2009,6 +2015,7 @@ CMathContent.prototype.Load_Changes = function(Reader)
{ {
var ChangesPos = Reader.GetLong(); var ChangesPos = Reader.GetLong();
this.Content.splice(ChangesPos, 1); this.Content.splice(ChangesPos, 1);
CollaborativeEditing.Update_DocumentPositionsOnRemove(this, ChangesPos, 1);
} }
break; 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