Commit 86a3d7ed authored by Anna.Pavlova's avatar Anna.Pavlova Committed by Alexander.Trofimov

Поправила баг : когда перед инлайновой формулой находится текст, то если текст...

Поправила баг : когда перед инлайновой формулой находится текст, то если текст + первое слово не умещается в Range (ограниченным плавающим объктом), то тогда текст + слово в формуле переносятся в следующий Range, в отличии от ситуации когда слово формулы, которое не умещается в строке, переносится на следующую строку

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@64994 954022d7-b5bf-4e40-9824-e11837661b57
parent a718059e
......@@ -1510,6 +1510,12 @@ ParaMath.prototype.private_RecalculateRangeWrap = function(PRS, ParaPr, Depth)
this.private_UpdateXLimits(PRS);
var bStartRange = this.Root.IsStartRange(PRS.Line, PRS.Range);
var bNotBrPosInLWord = this.ParaMathRPI.bInline == true && bStartRange == true && PRS.Ranges.length > 0 && PRS.Word == true;
PRS.bBreakPosInLWord = bNotBrPosInLWord == false; //не обновляем для инлайновой формулы, когда WordLarge, перед формулой есть еще текст, чтобы не перебить LineBreakPos и выставить по тем меткам, которые были до формулы разбиение
var bEmptyLine = PRS.EmptyLine;
this.private_RecalculateRoot(PRS, ParaPr, Depth);
var WrapState = this.PageInfo.GetCurrentWrapState();
......@@ -1525,17 +1531,19 @@ ParaMath.prototype.private_RecalculateRangeWrap = function(PRS, ParaPr, Depth)
}
else if(this.ParaMathRPI.bInline == true && PRS.Ranges.length > 0)
{
// разместим остальные элементы под картинкой, если только все Range пустые в данной строке
if (PRS.RangesCount === PRS.Range && this.Root.IsEmptyLine(PRS.Line))
if(PRS.bBreakPosInLWord == true)
{
PRS.EmptyLine = true;
PRS.EmptyLine = bEmptyLine; // вернем пред знач-е
this.Root.Math_Set_EmptyRange(PRS.Line, PRS.Range);
PRS.bMathWordLarge = false;
PRS.NewRange = true;
PRS.MoveToLBP = false;
}
else
{
//не обновляем для инлайновой формулы, когда WordLarge, перед формулой есть еще текст, чтобы не перебить LineBreakPos и выставить по тем меткам, которые были до формулы разбиение
PRS.MoveToLBP = true;
}
this.PageInfo.UpdateCurrentWidth(PRS.Line, 0);
this.Root.Math_Set_EmptyRange(PRS.Line, PRS.Range);
PRS.bMathWordLarge = false;
PRS.NewRange = true;
PRS.MoveToLBP = false;
}
}
};
......@@ -2555,17 +2563,17 @@ ParaMath.prototype.Read_FromBinary2 = function(Reader)
ParaMath.prototype.Get_ContentSelection = function()
{
var oContent = this.GetSelectContent().Content;
var oContent = this.GetSelectContent().Content;
if (oContent.bRoot)
return null;
//
/*var Bounds = oContent.Get_Bounds();
return Bounds;*/
var Bounds = oContent.Get_Bounds();
return Bounds;
var ContentBounds = oContent.Get_Bounds();
/*var ContentBounds = oContent.Get_Bounds();
var ParaMathBounds = [];
for(var i = 0; i < ContentBounds.length; i++)
......@@ -2573,7 +2581,7 @@ ParaMath.prototype.Get_ContentSelection = function()
ParaMathBounds[i] = ContentBounds[i][0];
}
return ParaMathBounds;
return ParaMathBounds;*/
};
......@@ -2717,9 +2725,9 @@ ParaMath.prototype.Get_Bounds = function()
return [{X : 0, Y : 0, W : 0, H : 0, Page : 0}];
else
{
//return this.Root.Get_Bounds();
return this.Root.Get_Bounds();
var RootBounds = this.Root.Get_Bounds();
/*var RootBounds = this.Root.Get_Bounds();
var ParaMathBounds = [];
for(var i = 0; i < RootBounds.length; i++)
......@@ -2727,8 +2735,7 @@ ParaMath.prototype.Get_Bounds = function()
ParaMathBounds[i] = RootBounds[i][0];
}
return ParaMathBounds;
return ParaMathBounds;*/
}
};
......
......@@ -2219,6 +2219,7 @@ function CParagraphRecalculateStateWrap(Para)
// у "крайних" в строке операторов/мат объектов сооответствующий Gap равен нулю
this.OperGapRight = 0;
this.OperGapLeft = 0;
this.MaxWordLen = 0;
this.bNoOneBreakOperator = true; // прежде чем обновлять позицию в контент Run, учтем были ли до этого break-операторы (проверки на Word == false не достаточно, т.к. формула мб инлайновая и тогда не нужно обновлять позицию)
this.BreakBox = false;
this.bInsideOper = false; // учитываем есть ли разбивка внутри мат объекта, чтобы случайно не вставить в конец пред оператора (при Brk_Before == false)
......@@ -2226,6 +2227,7 @@ function CParagraphRecalculateStateWrap(Para)
this.bFastRecalculate = false;
this.bBoxOperator = false;
this.bMathWrap = false;
this.bBreakPosInLWord = true; // обновляем LineBreakPos (Set_LineBreakPos) для WordLarge. Не обновляем для инлайновой формулы, перед формулой есть еще текст, чтобы не перебить LineBreakPos и выставить по тем меткам, которые были до формулы разбиение
}
CParagraphRecalculateStateWrap.prototype =
......@@ -2265,6 +2267,7 @@ CParagraphRecalculateStateWrap.prototype =
this.bFastRecalculate = false;
this.bBoxOperator = false;
this.BreakBox = false;
this.bBreakPosInLWord = true;
},
// Обнуляем некоторые параметры перед новым отрезком
......@@ -2302,6 +2305,7 @@ CParagraphRecalculateStateWrap.prototype =
this.BreakBox = false;
this.bFastRecalculate = false;
this.bBoxOperator = false;
this.bBreakPosInLWord = true;
},
Reset_RestartPageRecalcInfo : function()
......
......@@ -2419,7 +2419,9 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
}
X += SpaceLen + WordLen;
PRS.Set_LineBreakPos(Pos);
if(PRS.bBreakPosInLWord == true)
PRS.Set_LineBreakPos(Pos);
SpaceLen = 0;
WordLen = 0;
......@@ -2488,7 +2490,8 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
SpaceLen = 0;
WordLen = 0;
PRS.Set_LineBreakPos(Pos+1); // LineBreakPos обновляем здесь, т.к. слово может начаться с мат объекта, а не с Run, в мат объекте нет соответствующей проверки
if(PRS.bBreakPosInLWord == true)
PRS.Set_LineBreakPos(Pos+1); // LineBreakPos обновляем здесь, т.к. слово может начаться с мат объекта, а не с Run, в мат объекте нет соответствующей проверки
FirstItemOnLine = false;
......
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