Commit 59d71f81 authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Сделано, чтобы при добавлении новых элементов в формулу начальное изменение...

Сделано, чтобы при добавлении новых элементов в формулу начальное изменение текстовых настроек не учитывалось в рецензировании. Исправлен баг в функции выставления селекта для элементов параграфа (Set_SelectionContentPos), сама функция для класса MathContent удалена, т.к. она ничем не отличается от базовой. Реализован поиск изменений рецензирования с учетом формул.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@66611 954022d7-b5bf-4e40-9824-e11837661b57
parent 1e3e3dac
...@@ -653,6 +653,9 @@ ParaMath.prototype.Get_CompiledTextPr = function(Copy) ...@@ -653,6 +653,9 @@ ParaMath.prototype.Get_CompiledTextPr = function(Copy)
ParaMath.prototype.Add = function(Item) ParaMath.prototype.Add = function(Item)
{ {
var LogicDocument = (this.Paragraph ? this.Paragraph.LogicDocument : undefined);
var TrackRevisions = (LogicDocument && true === LogicDocument.Is_TrackRevisions() ? true : false);
var Type = Item.Type; var Type = Item.Type;
var oSelectedContent = this.GetSelectContent(); var oSelectedContent = this.GetSelectContent();
...@@ -673,7 +676,14 @@ ParaMath.prototype.Add = function(Item) ...@@ -673,7 +676,14 @@ ParaMath.prototype.Add = function(Item)
if(oContent.bRoot == false && Run.IsPlaceholder()) if(oContent.bRoot == false && Run.IsPlaceholder())
{ {
var CtrRunPr = oContent.Get_ParentCtrRunPr(false); // ctrPrp (не копия) var CtrRunPr = oContent.Get_ParentCtrRunPr(false); // ctrPrp (не копия)
if (true === TrackRevisions)
LogicDocument.Set_TrackRevisions(false);
Run.Apply_TextPr(CtrRunPr, undefined, true); Run.Apply_TextPr(CtrRunPr, undefined, true);
if (true === TrackRevisions)
LogicDocument.Set_TrackRevisions(true);
} }
if(Item.Value == 38) if(Item.Value == 38)
...@@ -724,8 +734,14 @@ ParaMath.prototype.Add = function(Item) ...@@ -724,8 +734,14 @@ ParaMath.prototype.Add = function(Item)
}; };
TextPr.RFonts.Set_All("Cambria Math", -1); TextPr.RFonts.Set_All("Cambria Math", -1);
if (true === TrackRevisions)
LogicDocument.Set_TrackRevisions(false);
oContent.Apply_TextPr(TextPr, undefined, false, Pos_ApplyTextPr); oContent.Apply_TextPr(TextPr, undefined, false, Pos_ApplyTextPr);
//oContent.Set_MathTextPr2(MathTxtPr.TextPr, MathTxtPr.MathPr, false, StartPos + 1, lng2 - lng);
if (true === TrackRevisions)
LogicDocument.Set_TrackRevisions(true);
} }
if ((para_Text === Type || para_Space === Type) && null !== NewElement) if ((para_Text === Type || para_Space === Type) && null !== NewElement)
......
...@@ -14852,6 +14852,7 @@ function CParagraphRevisionsChangesChecker(Para, RevisionsManager) ...@@ -14852,6 +14852,7 @@ function CParagraphRevisionsChangesChecker(Para, RevisionsManager)
this.ParaId = Para.Get_Id(); this.ParaId = Para.Get_Id();
this.RevisionsManager = RevisionsManager; this.RevisionsManager = RevisionsManager;
this.ParaEndRun = false; this.ParaEndRun = false;
this.CheckOnlyTextPr = 0;
// Блок информации для добавления/удаления текста // Блок информации для добавления/удаления текста
this.AddRemove = this.AddRemove =
...@@ -14954,6 +14955,14 @@ CParagraphRevisionsChangesChecker.prototype.Add_Text = function(Text) ...@@ -14954,6 +14955,14 @@ CParagraphRevisionsChangesChecker.prototype.Add_Text = function(Text)
{ {
this.AddRemove.Value += Text; this.AddRemove.Value += Text;
}; };
CParagraphRevisionsChangesChecker.prototype.Add_Math = function(MathElement)
{
this.AddRemove.Value += "[ FORMULA ]";
};
CParagraphRevisionsChangesChecker.prototype.Add_Drawing = function(Drawing)
{
this.AddRemove.Value += "[ DRAWING ]";
};
CParagraphRevisionsChangesChecker.prototype.Have_PrChange = function() CParagraphRevisionsChangesChecker.prototype.Have_PrChange = function()
{ {
return (null === this.TextPr.Pr ? false : true); return (null === this.TextPr.Pr ? false : true);
...@@ -14992,4 +15001,16 @@ CParagraphRevisionsChangesChecker.prototype.Is_ParaEndRun = function() ...@@ -14992,4 +15001,16 @@ CParagraphRevisionsChangesChecker.prototype.Is_ParaEndRun = function()
CParagraphRevisionsChangesChecker.prototype.Set_ParaEndRun = function() CParagraphRevisionsChangesChecker.prototype.Set_ParaEndRun = function()
{ {
this.ParaEndRun = true; this.ParaEndRun = true;
};
CParagraphRevisionsChangesChecker.prototype.Begin_CheckOnlyTextPr = function()
{
this.CheckOnlyTextPr++;
};
CParagraphRevisionsChangesChecker.prototype.End_CheckOnlyTextPr = function()
{
this.CheckOnlyTextPr--;
};
CParagraphRevisionsChangesChecker.prototype.Is_CheckOnlyTextPr = function()
{
return (0 === this.CheckOnlyTextPr ? false : true);
}; };
\ No newline at end of file
...@@ -1840,8 +1840,9 @@ CParagraphContentWithParagraphLikeContent.prototype.Set_SelectionContentPos = fu ...@@ -1840,8 +1840,9 @@ CParagraphContentWithParagraphLikeContent.prototype.Set_SelectionContentPos = fu
// Удалим отметки о старом селекте // Удалим отметки о старом селекте
if ( OldStartPos < StartPos && OldStartPos < EndPos ) if ( OldStartPos < StartPos && OldStartPos < EndPos )
{ {
var TempLimit = Math.min( StartPos, EndPos ); var TempBegin = OldStartPos;
for ( var CurPos = OldStartPos; CurPos < TempLimit; CurPos++ ) var TempEnd = Math.min(this.Content.length - 1, Math.min(StartPos, EndPos) - 1);
for (var CurPos = TempBegin; CurPos <= TempEnd; ++CurPos)
{ {
this.Content[CurPos].Selection_Remove(); this.Content[CurPos].Selection_Remove();
} }
...@@ -1849,8 +1850,9 @@ CParagraphContentWithParagraphLikeContent.prototype.Set_SelectionContentPos = fu ...@@ -1849,8 +1850,9 @@ CParagraphContentWithParagraphLikeContent.prototype.Set_SelectionContentPos = fu
if ( OldEndPos > StartPos && OldEndPos > EndPos ) if ( OldEndPos > StartPos && OldEndPos > EndPos )
{ {
var TempLimit = Math.max( StartPos, EndPos ); var TempBegin = Math.max(StartPos, EndPos) + 1;
for ( var CurPos = TempLimit + 1; CurPos <= OldEndPos; CurPos++ ) var TempEnd = Math.min(OldEndPos, this.Content.length - 1);
for (var CurPos = TempBegin; CurPos <= TempEnd; ++CurPos)
{ {
this.Content[CurPos].Selection_Remove(); this.Content[CurPos].Selection_Remove();
} }
...@@ -2436,7 +2438,6 @@ CParagraphContentWithParagraphLikeContent.prototype.private_UpdateTrackRevisions ...@@ -2436,7 +2438,6 @@ CParagraphContentWithParagraphLikeContent.prototype.private_UpdateTrackRevisions
RevisionsManager.Check_Paragraph(this.Paragraph); RevisionsManager.Check_Paragraph(this.Paragraph);
} }
}; };
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
// Функции, которые должны быть реализованы в классах наследниках // Функции, которые должны быть реализованы в классах наследниках
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
......
...@@ -10145,7 +10145,7 @@ ParaRun.prototype.Check_RevisionsChanges = function(Checker, ContentPos, Depth) ...@@ -10145,7 +10145,7 @@ ParaRun.prototype.Check_RevisionsChanges = function(Checker, ContentPos, Depth)
if (this.Is_Empty()) if (this.Is_Empty())
return; return;
if (true !== Checker.Is_ParaEndRun()) if (true !== Checker.Is_ParaEndRun() && true !== Checker.Is_CheckOnlyTextPr())
{ {
var ReviewType = this.Get_ReviewType(); var ReviewType = this.Get_ReviewType();
if (ReviewType !== Checker.Get_AddRemoveType()) if (ReviewType !== Checker.Get_AddRemoveType())
...@@ -10167,13 +10167,29 @@ ParaRun.prototype.Check_RevisionsChanges = function(Checker, ContentPos, Depth) ...@@ -10167,13 +10167,29 @@ ParaRun.prototype.Check_RevisionsChanges = function(Checker, ContentPos, Depth)
var ItemType = Item.Type; var ItemType = Item.Type;
switch (ItemType) switch (ItemType)
{ {
case para_Drawing:
{
Checker.Add_Text(Text);
Text = "";
Checker.Add_Drawing(Item);
break;
}
case para_Text : case para_Text :
{
Text += String.fromCharCode(Item.Value); Text += String.fromCharCode(Item.Value);
break; break;
}
case para_Math_Text:
{
Text += String.fromCharCode(Item.getCodeChr());
break;
}
case para_Space: case para_Space:
case para_Tab : case para_Tab :
{
Text += " "; Text += " ";
break; break;
}
} }
} }
Checker.Add_Text(Text); Checker.Add_Text(Text);
......
...@@ -2350,6 +2350,41 @@ CMathBase.prototype.Set_ReviewTypeWithInfo = function(ReviewType, ReviewInfo) ...@@ -2350,6 +2350,41 @@ CMathBase.prototype.Set_ReviewTypeWithInfo = function(ReviewType, ReviewInfo)
History.Add(this, new CChangesMathBaseReviewType(ReviewType, ReviewInfo, this.ReviewType, this.ReviewInfo)); History.Add(this, new CChangesMathBaseReviewType(ReviewType, ReviewInfo, this.ReviewType, this.ReviewInfo));
this.raw_SetReviewType(ReviewType, ReviewInfo); this.raw_SetReviewType(ReviewType, ReviewInfo);
}; };
CMathBase.prototype.Check_RevisionsChanges = function(Checker, ContentPos, Depth)
{
var ReviewType = this.Get_ReviewType();
if (true !== Checker.Is_CheckOnlyTextPr())
{
if (ReviewType !== Checker.Get_AddRemoveType())
{
Checker.Flush_AddRemoveChange();
ContentPos.Update(0, Depth);
if (reviewtype_Add === ReviewType || reviewtype_Remove === ReviewType)
{
this.Get_StartPos(ContentPos, Depth);
Checker.Start_AddRemove(ReviewType, ContentPos);
}
}
if (reviewtype_Add === ReviewType || reviewtype_Remove === ReviewType)
{
Checker.Add_Math(this);
Checker.Update_AddRemoveReviewInfo(this.ReviewInfo);
this.Get_EndPos(false, ContentPos, Depth);
Checker.Set_AddRemoveEndPos(ContentPos);
}
}
if (reviewtype_Common !== ReviewType)
Checker.Begin_CheckOnlyTextPr();
CMathBase.superclass.Check_RevisionsChanges.apply(this, arguments);
if (reviewtype_Common !== ReviewType)
Checker.End_CheckOnlyTextPr();
};
CMathBase.prototype.Math_Set_EmptyRange = CMathContent.prototype.Math_Set_EmptyRange; CMathBase.prototype.Math_Set_EmptyRange = CMathContent.prototype.Math_Set_EmptyRange;
CMathBase.prototype.Set_ParaMath = CMathContent.prototype.Set_ParaMath; CMathBase.prototype.Set_ParaMath = CMathContent.prototype.Set_ParaMath;
......
...@@ -3164,86 +3164,6 @@ CMathContent.prototype.Set_ParaContentPos = function(ContentPos, Depth) ...@@ -3164,86 +3164,6 @@ CMathContent.prototype.Set_ParaContentPos = function(ContentPos, Depth)
this.Content[this.CurPos].Set_ParaContentPos(ContentPos, Depth + 1); this.Content[this.CurPos].Set_ParaContentPos(ContentPos, Depth + 1);
} }
}; };
CMathContent.prototype.Set_SelectionContentPos = function(StartContentPos, EndContentPos, Depth, StartFlag, EndFlag)
{
var OldStartPos = this.Selection.StartPos;
var OldEndPos = this.Selection.EndPos;
if (OldStartPos > OldEndPos)
{
OldStartPos = this.Selection.EndPos;
OldEndPos = this.Selection.StartPos;
}
OldStartPos = Math.min(this.Content.length - 1, Math.max(0, OldStartPos));
OldEndPos = Math.min(this.Content.length - 1, Math.max(0, OldEndPos));
var StartPos = 0;
switch(StartFlag)
{
case 1: StartPos = 0; break;
case -1: StartPos = this.Content.length - 1; break;
case 0: StartPos = StartContentPos.Get(Depth); break;
}
var EndPos = 0;
switch(EndFlag)
{
case 1: EndPos = 0; break;
case -1: EndPos = this.Content.length - 1; break;
case 0: EndPos = EndContentPos.Get(Depth); break;
}
// Удалим отметки о старом селекте
if (OldStartPos < StartPos && OldStartPos < EndPos)
{
var TempLimit = Math.min(StartPos, EndPos);
for (var CurPos = OldStartPos; CurPos < TempLimit; CurPos++)
{
this.Content[CurPos].Selection_Remove();
}
}
if (OldEndPos > StartPos && OldEndPos > EndPos)
{
var TempLimit = Math.max(StartPos, EndPos);
for (var CurPos = TempLimit + 1; CurPos <= OldEndPos; CurPos++)
{
this.Content[CurPos].Selection_Remove();
}
}
// Выставим метки нового селекта
this.Selection.Use = true;
this.Selection.StartPos = StartPos;
this.Selection.EndPos = EndPos;
if (StartPos !== EndPos)
{
this.Content[StartPos].Set_SelectionContentPos(StartContentPos, null, Depth + 1, StartFlag, StartPos > EndPos ? 1 : -1);
this.Content[EndPos].Set_SelectionContentPos(null, EndContentPos, Depth + 1, StartPos > EndPos ? -1 : 1, EndFlag);
var _StartPos = StartPos;
var _EndPos = EndPos;
var Direction = 1;
if ( _StartPos > _EndPos )
{
_StartPos = EndPos;
_EndPos = StartPos;
Direction = -1;
}
for (var CurPos = _StartPos + 1; CurPos < _EndPos; CurPos++)
{
this.Content[CurPos].Select_All( Direction );
}
}
else
{
this.Content[StartPos].Set_SelectionContentPos(StartContentPos, EndContentPos, Depth + 1, StartFlag, EndFlag);
}
};
CMathContent.prototype.Selection_IsEmpty = function() CMathContent.prototype.Selection_IsEmpty = function()
{ {
if (true !== this.Selection.Use) if (true !== this.Selection.Use)
......
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