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

Формула не разбивалась по оператору внути N-арного оператора, так как параметр...

Формула не разбивалась по оператору внути N-арного оператора, так как параметр PRS.bInsideOper перебивался при пересчете следующего мат объекта из этого же контента

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@63578 954022d7-b5bf-4e40-9824-e11837661b57
parent 719bb5de
...@@ -2203,11 +2203,6 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -2203,11 +2203,6 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
if (true !== Word) if (true !== Word)
{ {
// Слово только началось. Делаем следующее:
// 1) Если до него на строке ничего не было и данная строка не
// имеет разрывов, тогда не надо проверять убирается ли слово в строке.
// 2) В противном случае, проверяем убирается ли слово в промежутке.
// Если слово только началось, и до него на строке ничего не было, и в строке нет разрывов, тогда не надо проверять убирается ли оно на строке. // Если слово только началось, и до него на строке ничего не было, и в строке нет разрывов, тогда не надо проверять убирается ли оно на строке.
if (true !== FirstItemOnLine /*|| false === Para.Internal_Check_Ranges(ParaLine, ParaRange)*/) if (true !== FirstItemOnLine /*|| false === Para.Internal_Check_Ranges(ParaLine, ParaRange)*/)
{ {
...@@ -2234,10 +2229,8 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -2234,10 +2229,8 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
if(true === FirstItemOnLine /*&& true === Para.Internal_Check_Ranges(ParaLine, ParaRange)*/) if(true === FirstItemOnLine /*&& true === Para.Internal_Check_Ranges(ParaLine, ParaRange)*/)
{ {
// Слово оказалось единственным элементом в промежутке, и, все равно, // Слово оказалось единственным элементом в промежутке, и, все равно, не умещается целиком.
// не умещается целиком. Делаем следующее: // для Формулы слово не разбиваем, перенос не делаем, пишем в одну строку (слово выйдет за границу как в Ворде)
//
// Для Формулы слово не разбиваем, перенос не делаем, пишем в одну строку (слово выйдет за границу как в Ворде)
bMathWordLarge = true; bMathWordLarge = true;
......
...@@ -547,7 +547,6 @@ CAccent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -547,7 +547,6 @@ CAccent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
var WordLen = PRS.WordLen; // запоминаем, чтобы внутр мат объекты не увеличили WordLen var WordLen = PRS.WordLen; // запоминаем, чтобы внутр мат объекты не увеличили WordLen
PRS.bMath_OneLine = true; PRS.bMath_OneLine = true;
PRS.bInsideOper = false;
var oBase = this.getBase(); var oBase = this.getBase();
oBase.Recalculate_Reset(PRS.Range, PRS.Line, PRS ); // обновим StartLine и StartRange oBase.Recalculate_Reset(PRS.Range, PRS.Line, PRS ); // обновим StartLine и StartRange
......
...@@ -1784,8 +1784,6 @@ CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1784,8 +1784,6 @@ CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
this.BrGapRight = this.GapRight; this.BrGapRight = this.GapRight;
} }
PRS.bInsideOper = false;
if(this.bOneLine == true) if(this.bOneLine == true)
{ {
PRS.bMath_OneLine = this.bOneLine; PRS.bMath_OneLine = this.bOneLine;
......
...@@ -866,8 +866,6 @@ CDegreeSubSup.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -866,8 +866,6 @@ CDegreeSubSup.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
this.bOneLine = PRS.bMath_OneLine; this.bOneLine = PRS.bMath_OneLine;
PRS.bInsideOper = false;
if(this.bOneLine === true) if(this.bOneLine === true)
{ {
CDegreeSubSup.superclass.Recalculate_Range.call(this, PRS, ParaPr, Depth); CDegreeSubSup.superclass.Recalculate_Range.call(this, PRS, ParaPr, Depth);
...@@ -894,7 +892,6 @@ CDegreeSubSup.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -894,7 +892,6 @@ CDegreeSubSup.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
PRS.Update_CurPos(0, Depth); PRS.Update_CurPos(0, Depth);
PRS.bMath_OneLine = false; PRS.bMath_OneLine = false;
PRS.bInsideOper = false;
if(this.Pr.type == DEGREE_SubSup) // baseContent, iters if(this.Pr.type == DEGREE_SubSup) // baseContent, iters
this.baseContent.Recalculate_Range(PRS, ParaPr, Depth+1); this.baseContent.Recalculate_Range(PRS, ParaPr, Depth+1);
......
...@@ -3870,6 +3870,9 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -3870,6 +3870,9 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
} }
} }
var bParentInsideOper = PRS.bInsideOper,
bCurInsideOper = false;
for(var Pos = RangeStartPos; Pos < ContentLen; Pos++) for(var Pos = RangeStartPos; Pos < ContentLen; Pos++)
{ {
var Item = this.Content[Pos], var Item = this.Content[Pos],
...@@ -3912,8 +3915,12 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -3912,8 +3915,12 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
var PrevWord = PRS.Word; var PrevWord = PRS.Word;
PRS.bInsideOper = false;
Item.Recalculate_Range(PRS, ParaPr, Depth + 1); Item.Recalculate_Range(PRS, ParaPr, Depth + 1);
bParentInsideOper = bParentInsideOper || PRS.bInsideOper;
PRS.bBoxOperator = Type == para_Math_Composition && Item.kind == MATH_BOX; PRS.bBoxOperator = Type == para_Math_Composition && Item.kind == MATH_BOX;
if(Type == para_Math_Composition) if(Type == para_Math_Composition)
...@@ -3970,6 +3977,8 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -3970,6 +3977,8 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
} }
else else
{ {
bCurInsideOper = bCurInsideOper || PRS.bInsideOper;
// Слово не убирается в отрезке. Переносим слово в следующий отрезок // Слово не убирается в отрезке. Переносим слово в следующий отрезок
// FirstItemOnLine == false - слово оказалось не единственным элементом в промежутке, делаем перенос // FirstItemOnLine == false - слово оказалось не единственным элементом в промежутке, делаем перенос
...@@ -3981,11 +3990,9 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -3981,11 +3990,9 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
this.ParaMath.UpdateWidthLine(PRS, PRS.X - PRS.XRange); this.ParaMath.UpdateWidthLine(PRS, PRS.X - PRS.XRange);
} }
var bInsideOperator = Item.bOneLine == false && PRS.bInsideOper == true;
// обновляем BreakPos на конец Run, т.к. внутри мат объекта BreakPos может измениться на if(true !== Word) // обновляем BreakPos на конец Run, т.к. внутри мат объекта BreakPos может измениться на if(true !== Word)
// обновляем только в том случае, если Word = false, иначе можем здесь перебить корректный LineBreakPos // обновляем только в том случае, если Word = false, иначе можем здесь перебить корректный LineBreakPos
if(PrevWord == false && Brk_Before == false && bNoOneBreakOperator == false && bInsideOperator == false) if(PrevWord == false && Brk_Before == false && bNoOneBreakOperator == false && bCurInsideOper == false)
{ {
// обновим : начало нового слова - конец предыдущего Run // обновим : начало нового слова - конец предыдущего Run
...@@ -4026,6 +4033,8 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -4026,6 +4033,8 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
} }
} }
PRS.bInsideOper = bParentInsideOper;
if ( Pos >= ContentLen ) if ( Pos >= ContentLen )
{ {
RangeEndPos = Pos - 1; RangeEndPos = Pos - 1;
......
...@@ -461,8 +461,6 @@ CNary.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -461,8 +461,6 @@ CNary.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
this.bOneLine = PRS.bMath_OneLine; this.bOneLine = PRS.bMath_OneLine;
PRS.bInsideOper = false;
if(this.bOneLine === true) if(this.bOneLine === true)
{ {
CNary.superclass.Recalculate_Range.call(this, PRS, ParaPr, Depth); CNary.superclass.Recalculate_Range.call(this, PRS, ParaPr, Depth);
......
...@@ -3441,8 +3441,6 @@ CDelimiter.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -3441,8 +3441,6 @@ CDelimiter.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
this.bOneLine = PRS.bMath_OneLine == true || this.Content.length > 1; // this.Content.length > 1 - несколько контентов, разделенные сепараторами this.bOneLine = PRS.bMath_OneLine == true || this.Content.length > 1; // this.Content.length > 1 - несколько контентов, разделенные сепараторами
PRS.bInsideOper = false;
if(this.bOneLine == false) if(this.bOneLine == false)
{ {
var CurLine = PRS.Line - this.StartLine; var CurLine = PRS.Line - this.StartLine;
......
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