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);
};
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
// Классы с изменениями // Классы с изменениями
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
......
...@@ -77,7 +77,7 @@ CParagraphContentWithContentBase.prototype.protected_GetRangesCount = function(L ...@@ -77,7 +77,7 @@ CParagraphContentWithContentBase.prototype.protected_GetRangesCount = function(L
}; };
// Здесь предполагается, что строки с номерами меньше, чем LineIndex заданы, а также заданы и отрезки в строке // Здесь предполагается, что строки с номерами меньше, чем LineIndex заданы, а также заданы и отрезки в строке
// LineIndex, с номерами меньшими, чем RangeIndex. В данной функции удаляются все записи, которые идут после LineIndex, // LineIndex, с номерами меньшими, чем RangeIndex. В данной функции удаляются все записи, которые идут после LineIndex,
// RangeIndex. Т.е. удаляются все строки, с номерами больше, чем LineIndex, и в строке LineIndex удаляются все отрезки // RangeIndex. Т.е. удаляются все строки, с номерами больше, чем LineIndex, и в строке LineIndex удаляются все отрезки
// с номерами больше, чем RangeIndex. Возвращается позиция предпоследнего отрезка, либо 0. // с номерами больше, чем RangeIndex. Возвращается позиция предпоследнего отрезка, либо 0.
CParagraphContentWithContentBase.prototype.protected_AddRange = function(LineIndex, RangeIndex) CParagraphContentWithContentBase.prototype.protected_AddRange = function(LineIndex, RangeIndex)
...@@ -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