Commit d5c7a89a authored by Anna.Pavlova's avatar Anna.Pavlova

Поправлено падение : зацикливание для ситуации, когда картинка располагается в...

Поправлено падение : зацикливание для ситуации, когда картинка располагается в пред параграфе, формула занимает одну строку и располагается справа относительно картинки

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@65572 954022d7-b5bf-4e40-9824-e11837661b57
parent 566dd700
......@@ -264,7 +264,7 @@ CParaMathLineWidths.prototype.UpdateWidth = function(Line, W)
bUpdMaxWidth = Math.abs(Max - this.MaxW) > 0.0001;
}
return bUpdMaxWidth;
return Line !== 0 && bUpdMaxWidth; // проверка на первую строку необходима для того, чтобы не вытставить PRS.bContinueMathRecalc = true
};
CParaMathLineWidths.prototype.SetWordLarge = function(Line, bWordLarge)
{
......@@ -1210,7 +1210,7 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
var PrevLineObject = PRS.RestartPageRecalcInfo.Object;
var PrevObject = PrevLineObject == null || this.Id == PrevLineObject.Id ? null : PrevLineObject;
if(PrevLineObject == null && true == bStartRange && PRS.bFastRecalculate == false)
if(PrevLineObject == null && true == bStartRange && PRS.bFastRecalculate == false && PRS.bContinueMathRecalc == false)
{
// информация о пересчете
var RPI = new CRPI();
......@@ -1239,7 +1239,7 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
// или же произошли какие-то изменения на странице и вызвался пересчет для этой страницы (PrevLineObject == null) и отсутствует быстрый пересчет (PRS.bFastRecalculate == false)
var bResetNextPage = true == this.PageInfo.IsResetNextPage(Page);
var bResetPageInfo = PrevLineObject == null && PRS.bFastRecalculate == false && true == this.PageInfo.IsFirstLineOnPage(ParaLine, Page);
var bResetPageInfo = PrevLineObject == null && PRS.bFastRecalculate == false && PRS.bContinueMathRecalc == false && true == this.PageInfo.IsFirstLineOnPage(ParaLine, Page);
if(bResetNextPage == true || bResetPageInfo == true)
{
......@@ -1275,8 +1275,8 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
this.PageInfo.UpdateCurrentPage(Page, ParaLine);
var bRecalcNormal = true;
if(this.ParaMathRPI.bInline == false && PRS.bFastRecalculate == false)
var bOneLineMath = PRS.bContinueMathRecalc == true && true == bStartRange && PrevLineObject == null; // пересчет заново не нужен, т.к. продолжаем пересчитывать (PRS.bContinueMathRecalc == true)
if(this.ParaMathRPI.bInline == false && PRS.bFastRecalculate == false && bOneLineMath == false)
{
var UpdWrap = this.private_UpdateWrapSettings(PRS, ParaPr);
......@@ -1328,6 +1328,11 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
}
}
if(PRS.RecalcResult == recalcresult_PrevLine) // неинлайновая формула не пересчитана
{
PRS.bContinueMathRecalc = true;
}
if(PRS.NewRange == false)
{
PRS.RestartPageRecalcInfo.Object = PrevObject; // возвращаем формулу, которая инициировала пересчет (если это была текущая формула, то null)
......@@ -1698,7 +1703,6 @@ ParaMath.prototype.Recalculate_LineMetrics = function(PRS, ParaPr, _CurLine, _Cu
var RootAscent = this.Root.GetAscent(_CurLine, _CurRange),
RootDescent = this.Root.GetDescent(_CurLine, _CurRange);
if(PRS.LineAscent < RootAscent)
PRS.LineAscent = RootAscent;
......@@ -2689,28 +2693,6 @@ ParaMath.prototype.Split = function (ContentPos, Depth)
this.Root.SplitContent(NewParaMath.Root, ContentPos, Depth);
//var Pos = ContentPos.Get(Depth);
/*if(this.Root.Content[Pos].Type == para_Math_Run)
{
var NewRun = this.Root.Content[Pos].Split(ContentPos, Depth+1);
NewParaMath.Root.Add_ToContent(0, NewRun);
var len = this.Root.Content.length;
if(Pos < len - 1)
{
NewParaMath.Root.Concat_ToContent( this.Root.Content.slice(Pos + 1) );
this.Root.Remove_FromContent(Pos+1, len - Pos - 1);
}
this.SetNeedResize();
NewParaMath.SetNeedResize();
}*/
return NewParaMath;
};
......
......@@ -527,6 +527,7 @@ Paragraph.prototype.private_RecalculatePage = function(CurPage, bFirs
PRS.Reset_Ranges();
PRS.Reset_PageBreak();
PRS.Reset_RunRecalcInfo();
PRS.Reset_MathRecalcInfo();
}
else if (recalcresult_PrevLine === RecalcResult)
{
......@@ -2228,6 +2229,7 @@ function CParagraphRecalculateStateWrap(Para)
this.bBoxOperator = false;
this.bMathWrap = false;
this.bBreakPosInLWord = true; // обновляем LineBreakPos (Set_LineBreakPos) для WordLarge. Не обновляем для инлайновой формулы, перед формулой есть еще текст, чтобы не перебить LineBreakPos и выставить по тем меткам, которые были до формулы разбиение
this.bContinueMathRecalc = false;
}
CParagraphRecalculateStateWrap.prototype =
......@@ -2358,7 +2360,10 @@ CParagraphRecalculateStateWrap.prototype =
{
this.RunRecalcInfoBreak = this.RunRecalcInfoLast;
},
Reset_MathRecalcInfo: function()
{
this.bContinueMathRecalc = false;
},
Restore_RunRecalcInfo : function()
{
this.RunRecalcInfoLast = this.RunRecalcInfoBreak;
......
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