Commit 30941b8a authored by Anna.Pavlova's avatar Anna.Pavlova Committed by Alexander.Trofimov

Поправила баг для inline формул в многосточных контентах могут перенестись...

Поправила баг для inline формул в многосточных контентах могут перенестись контенты, к-ые не разбиваются на строки, отдельно от контента, к-ый разбивается (скобки, итераторы и т.д.)

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@62781 954022d7-b5bf-4e40-9824-e11837661b57
parent 45d02e71
......@@ -2170,20 +2170,21 @@ function CParagraphRecalculateStateWrap(Para)
};
// for ParaMath
this.bMath_OneLine = false; // for ParaMath
this.bMathWordLarge = false; // for ParaMath
this.bEndRunToContent = false;
this.PosEndRun = new CParagraphContentPos();
this.bMath_OneLine = false; // for ParaMath
this.bMathWordLarge = false; // for ParaMath
this.bEndRunToContent = false;
this.PosEndRun = new CParagraphContentPos();
this.WrapIndent = 0; // WrapIndent нужен для сравнения с длиной слова (когда слово разбивается по Compare Oper): ширина первой строки формулы не должна быть меньше WrapIndent
this.bFirstCompareOper = true;
this.bCompareWrapIndent = false;
this.WrapIndent = 0; // WrapIndent нужен для сравнения с длиной слова (когда слово разбивается по Compare Oper): ширина первой строки формулы не должна быть меньше WrapIndent
this.bFirstCompareOper = true;
this.bCompareWrapIndent = false;
// у "крайних" в строке операторов/мат объектов сооответствующий Gap равен нулю
this.OperGapRight = 0;
this.OperGapLeft = 0;
this.bInsideOper = false; // учитываем есть ли разбивка внутри мат объекта, чтобы случайно не вставить в конец пред оператора (при Brk_Before == false)
this.bFastRecalculate = false;
this.OperGapRight = 0;
this.OperGapLeft = 0;
this.bNoOneBreakOperator = true; // прежде чем обновлять позицию в контент Run, учтем были ли до этого операторы (проверки на Word == false не достаточно, т.к. формула мб инлайновая и тогда не нужно обновлять позицию)
this.bInsideOper = false; // учитываем есть ли разбивка внутри мат объекта, чтобы случайно не вставить в конец пред оператора (при Brk_Before == false)
this.bFastRecalculate = false;
}
CParagraphRecalculateStateWrap.prototype =
......@@ -2217,6 +2218,7 @@ CParagraphRecalculateStateWrap.prototype =
this.WrapIndent = 0;
this.bFirstCompareOper = true;
this.bInsideOper = false;
this.bNoOneBreakOperator = true;
this.bFastRecalculate = false;
this.bCompareWrapIndent = false;
},
......@@ -2251,6 +2253,7 @@ CParagraphRecalculateStateWrap.prototype =
this.WrapIndent = 0;
this.bFirstCompareOper = true;
this.bInsideOper = false;
this.bNoOneBreakOperator = true;
this.bFastRecalculate = false;
this.bCompareWrapIndent = false;
},
......
......@@ -2271,6 +2271,8 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
var bOperInEndContent = PRS.bEndRunToContent == true && Pos == ContentLen - 1 && Word == true, // необходимо для того, чтобы у контентов мат объектов (к-ые могут разбиваться на строки) не было отметки Set_LineBreakPos, иначе скобка (или GapLeft), перед которой стоит break_Operator, перенесется на следующую строку (без текста !)
bLowPriority = bCompareOper == false && PRS.bFirstCompareOper == false;
PRS.bNoOneBreakOperator = false;
if(bOperInEndContent || bLowPriority)
{
if(X + SpaceLen + WordLen + BrkLen > XEnd)
......
......@@ -3942,6 +3942,7 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{
var FirstItemOnLine = PRS.FirstItemOnLine,
Word = PRS.Word;
var bNoOneBreakOperator = PRS.bNoOneBreakOperator;
Item.Recalculate_Range(PRS, ParaPr, Depth + 1);
......@@ -4016,7 +4017,7 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
var bInsideOperator = Item.bOneLine == false && PRS.bInsideOper == true;
if(Brk_Before == false && Word == false && bInsideOperator == false)
if(Brk_Before == false && bNoOneBreakOperator == false/*Word == false*/ && bInsideOperator == false)
{
// обновим : начало нового слова - конец предыдущего Run
var _Depth = PRS.PosEndRun.Depth;
......
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