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

Поправила баги, связанные с выравниваем строк (отличных от первой) и с...

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

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@61313 954022d7-b5bf-4e40-9824-e11837661b57
parent 455abb2f
...@@ -847,7 +847,7 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -847,7 +847,7 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
var RecalcResult = PRS.RecalcResult, var RecalcResult = PRS.RecalcResult,
RecalcInfoObject = PRS.PrevLineRecalcInfo.Object; RecalcInfoObject = PRS.PrevLineRecalcInfo.Object;
var CurrentPage = Page - this.FirstPage;
var MathSettings = Get_WordDocumentDefaultMathSettings(); var MathSettings = Get_WordDocumentDefaultMathSettings();
// первый пересчет // первый пересчет
...@@ -855,10 +855,8 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -855,10 +855,8 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
if(false == MathSettings.Get_DispDef() || this.ParaMathRPI.bInline) if(false == MathSettings.Get_DispDef() || this.ParaMathRPI.bInline)
this.State = ALIGN_EMPTY; this.State = ALIGN_EMPTY;
else if(CurrentPage == 0)
this.State = ALIGN_MARGIN_WRAP;
else else
this.State = ALIGN_MARGIN; this.State = ALIGN_MARGIN_WRAP;
this.FirstPage = Page; this.FirstPage = Page;
this.CurPageInfo.Page = -1; this.CurPageInfo.Page = -1;
...@@ -874,11 +872,16 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -874,11 +872,16 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
this.Root.PreRecalc(null, this, ArgSize, RPI); this.Root.PreRecalc(null, this, ArgSize, RPI);
} }
var CurrentPage = Page - this.FirstPage;
if(this.CurPageInfo.Page < Page) if(this.CurPageInfo.Page < Page)
{ {
this.CurPageInfo.Page = Page; this.CurPageInfo.Page = Page;
this.CurPageInfo.FirstLine = ParaLine - this.Root.StartLine; this.CurPageInfo.FirstLine = ParaLine - this.Root.StartLine;
this.CurPageInfo.MaxLineW = 0; this.CurPageInfo.MaxLineW = 0;
if(CurrentPage !== 0)
this.State = ALIGN_MARGIN;
} }
PRS.X += MathSettings.Get_LeftMargin(this.State); PRS.X += MathSettings.Get_LeftMargin(this.State);
......
...@@ -2123,19 +2123,28 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -2123,19 +2123,28 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
if(this.ParaMath.Is_BrkBinBefore() == true) if(this.ParaMath.Is_BrkBinBefore() == true)
{ {
if(Word == true) var BrkLen = Item.Width/TEXTWIDTH_DIVIDER;
if(X + WordLen + SpaceLen + BrkLen > XEnd && FirstItemOnLine == false) // Слово не убирается в отрезке. Переносим слово в следующий отрезок
{
MoveToLBP = true;
NewRange = true;
PRS.Set_LineBreakPos(Pos);
}
else if(Word == true)
{ {
X += SpaceLen + WordLen; X += SpaceLen + WordLen;
PRS.Set_LineBreakPos(Pos); PRS.Set_LineBreakPos(Pos);
EmptyLine = false; EmptyLine = false;
WordLen = Item.Width/TEXTWIDTH_DIVIDER; WordLen = BrkLen;
SpaceLen = 0; SpaceLen = 0;
FirstItemOnLine = false; FirstItemOnLine = false;
} }
else else
{ {
SpaceLen += Item.Width / TEXTWIDTH_DIVIDER;//SpaceLen += Item.Get_Width(); SpaceLen += BrkLen;//SpaceLen += Item.Get_Width();
} }
} }
else else
...@@ -2163,7 +2172,6 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -2163,7 +2172,6 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
Word = false; Word = false;
} }
} }
break; break;
...@@ -4223,7 +4231,7 @@ ParaRun.prototype.Get_ParaContentPosByXY = function(SearchPos, Depth, _CurLine, ...@@ -4223,7 +4231,7 @@ ParaRun.prototype.Get_ParaContentPosByXY = function(SearchPos, Depth, _CurLine,
if(this.Type == para_Math_Run) if(this.Type == para_Math_Run)
{ {
var PosLine = this.ParaMath.GetLinePosition(_CurLine); var PosLine = this.ParaMath.GetLinePosition(_CurLine);
var loc = this.Content[CurPos].GetLocationOfLetter() var loc = this.Content[CurPos].GetLocationOfLetter();
SearchPos.CurX = PosLine.x + loc.x; // позиция формулы в строке + смещение буквы в контенте SearchPos.CurX = PosLine.x + loc.x; // позиция формулы в строке + смещение буквы в контенте
} }
......
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