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

Поправлен баг с падениием, когда внутри break объекта находится еще один break...

Поправлен баг с падениием, когда внутри break объекта находится еще один break объект и в нем происходит разбиение

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@61488 954022d7-b5bf-4e40-9824-e11837661b57
parent d3ad6aa8
...@@ -1844,6 +1844,10 @@ CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1844,6 +1844,10 @@ CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
PRS.WordLen += this.GapLeft; PRS.WordLen += this.GapLeft;
} }
//var PosEndRun = PRS.PosEndRun.Copy();
//var Word = PRS.Word;
//var WordLen = PRS.WordLen;
for(var Pos = RangeStartPos; Pos < Len; Pos++) for(var Pos = RangeStartPos; Pos < Len; Pos++)
{ {
var Item = this.Content[Pos]; var Item = this.Content[Pos];
...@@ -1856,12 +1860,11 @@ CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1856,12 +1860,11 @@ CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
PRS.Update_CurPos(Pos, Depth); PRS.Update_CurPos(Pos, Depth);
PRS.bMath_OneLine = false; PRS.bMath_OneLine = false;
} }
var NeedSetReset = CurLine == 0 && CurRange == 0 || Pos !== RangeStartPos; var NeedSetReset = CurLine == 0 && CurRange == 0 || Pos !== RangeStartPos;
if(Item.Type == para_Math_Content && NeedSetReset) if(Item.Type == para_Math_Content && NeedSetReset)
Item.Recalculate_Reset( PRS.Range, PRS.Line ); // обновим StartLine и StartRange Item.Recalculate_Reset(PRS.Range, PRS.Line); // обновим StartLine и StartRange
Item.Recalculate_Range(PRS, ParaPr, Depth+1); Item.Recalculate_Range(PRS, ParaPr, Depth+1);
...@@ -1885,6 +1888,10 @@ CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1885,6 +1888,10 @@ CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
} }
} }
/*PRS.Word = true;
*/
if(PRS.NewRange == false) if(PRS.NewRange == false)
{ {
PRS.WordLen += this.GapRight; PRS.WordLen += this.GapRight;
...@@ -1893,7 +1900,6 @@ CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1893,7 +1900,6 @@ CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
this.protected_FillRange(CurLine, CurRange, RangeStartPos, RangeEndPos); this.protected_FillRange(CurLine, CurRange, RangeStartPos, RangeEndPos);
} }
PRS.bMath_OneLine = bOneLine; PRS.bMath_OneLine = bOneLine;
}; };
CMathBase.prototype.Math_GetWidth = function(_CurLine, _CurRange) CMathBase.prototype.Math_GetWidth = function(_CurLine, _CurRange)
......
...@@ -3832,7 +3832,9 @@ CMathContent.prototype.Selection_DrawRange = function(_CurLine, _CurRange, Selec ...@@ -3832,7 +3832,9 @@ CMathContent.prototype.Selection_DrawRange = function(_CurLine, _CurRange, Selec
SelectionDraw.W += Item.Get_Width(_CurLine); SelectionDraw.W += Item.Get_Width(_CurLine);
} }
else else
{
Item.Selection_DrawRange( _CurLine, _CurRange, SelectionDraw ); Item.Selection_DrawRange( _CurLine, _CurRange, SelectionDraw );
}
} }
}; };
CMathContent.prototype.Select_ElementByPos = function(nPos, bWhole) CMathContent.prototype.Select_ElementByPos = function(nPos, bWhole)
...@@ -4034,9 +4036,10 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -4034,9 +4036,10 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
// обновим : начало нового слова - конец предыдущего Run // обновим : начало нового слова - конец предыдущего Run
PRS.FirstItemOnLine = false; PRS.FirstItemOnLine = false;
var _Depth = PRS.PosEndRun.Depth;
PRS.Update_CurPos(PRS.PosEndRun.Get(Depth), Depth); PRS.Update_CurPos(PRS.PosEndRun.Get(_Depth-1), _Depth-1);
PRS.Set_LineBreakPos(PRS.PosEndRun.Get(Depth + 1)); PRS.Set_LineBreakPos(PRS.PosEndRun.Get(_Depth));
} }
PRS.X += PRS.SpaceLen + PRS.WordLen; PRS.X += PRS.SpaceLen + PRS.WordLen;
...@@ -4074,6 +4077,7 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -4074,6 +4077,7 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
// Слово не убирается в отрезке. Переносим слово в следующий отрезок // Слово не убирается в отрезке. Переносим слово в следующий отрезок
// FirstItemOnLine == false - слово оказалось не единственным элементом в промежутке, делаем перенос // FirstItemOnLine == false - слово оказалось не единственным элементом в промежутке, делаем перенос
if (PRS.FirstItemOnLine == false && PRS.X + PRS.SpaceLen + PRS.WordLen > PRS.XEnd) if (PRS.FirstItemOnLine == false && PRS.X + PRS.SpaceLen + PRS.WordLen > PRS.XEnd)
{ {
PRS.MoveToLBP = true; PRS.MoveToLBP = true;
...@@ -4085,8 +4089,10 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -4085,8 +4089,10 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
if(Brk_Before == false && PRS.Word == false) if(Brk_Before == false && PRS.Word == false)
{ {
// обновим : начало нового слова - конец предыдущего Run // обновим : начало нового слова - конец предыдущего Run
PRS.Update_CurPos(PRS.PosEndRun.Get(Depth), Depth); var _Depth = PRS.PosEndRun.Depth;
PRS.Set_LineBreakPos(PRS.PosEndRun.Get(Depth + 1));
PRS.Update_CurPos(PRS.PosEndRun.Get(_Depth-1), _Depth-1);
PRS.Set_LineBreakPos(PRS.PosEndRun.Get(_Depth));
} }
PRS.Word = true; PRS.Word = true;
...@@ -4126,7 +4132,6 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -4126,7 +4132,6 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
RangeEndPos = Pos - 1; RangeEndPos = Pos - 1;
} }
this.protected_FillRange(CurLine, CurRange, RangeStartPos, RangeEndPos); this.protected_FillRange(CurLine, CurRange, RangeStartPos, RangeEndPos);
}; };
...@@ -4141,7 +4146,7 @@ CMathContent.prototype.Get_StartRangePos = function(_CurLine, _CurRange, SearchP ...@@ -4141,7 +4146,7 @@ CMathContent.prototype.Get_StartRangePos = function(_CurLine, _CurRange, SearchP
if(this.Content[CurPos].Type == para_Math_Composition) if(this.Content[CurPos].Type == para_Math_Composition)
{ {
Result = this.Content[CurPos].Get_StartRangePos(_CurLine, _CurRange, SearchPos, Depth + 1); Result = this.Content[CurPos].Get_StartRangePos(_CurLine, _CurRange, SearchPos, Depth + 1); // пытаемся встать в начало внутреннего контента
if ( true === Result ) if ( true === Result )
{ {
...@@ -4149,7 +4154,10 @@ CMathContent.prototype.Get_StartRangePos = function(_CurLine, _CurRange, SearchP ...@@ -4149,7 +4154,10 @@ CMathContent.prototype.Get_StartRangePos = function(_CurLine, _CurRange, SearchP
} }
else if(this.bRoot) else if(this.bRoot)
{ {
Result = this.Content[StartPos].Math_Get_StartRangePos(true, _CurLine, _CurRange, SearchPos, Depth + 1); if(this.Content[StartPos].Type == para_Math_Composition) /// убрать
Result = this.Content[StartPos].Get_StartRangePos(_CurLine, _CurRange, SearchPos, Depth + 1);
else
Result = this.Content[StartPos].Math_Get_StartRangePos(true, _CurLine, _CurRange, SearchPos, Depth + 1);
if ( true === Result ) if ( true === Result )
SearchPos.Pos.Update(StartPos, Depth); SearchPos.Pos.Update(StartPos, Depth);
...@@ -4181,7 +4189,7 @@ CMathContent.prototype.Get_EndRangePos = function(_CurLine, _CurRange, SearchPos ...@@ -4181,7 +4189,7 @@ CMathContent.prototype.Get_EndRangePos = function(_CurLine, _CurRange, SearchPos
if(this.Content[CurPos].Type == para_Math_Composition) if(this.Content[CurPos].Type == para_Math_Composition)
{ {
Result = this.Content[CurPos].Get_EndRangePos(_CurLine, _CurRange, SearchPos, Depth + 1); Result = this.Content[CurPos].Get_EndRangePos(_CurLine, _CurRange, SearchPos, Depth + 1); // пытаемся встать в конец внутреннего контента
if ( true === Result ) if ( true === Result )
{ {
...@@ -4189,7 +4197,10 @@ CMathContent.prototype.Get_EndRangePos = function(_CurLine, _CurRange, SearchPos ...@@ -4189,7 +4197,10 @@ CMathContent.prototype.Get_EndRangePos = function(_CurLine, _CurRange, SearchPos
} }
else if(this.bRoot) else if(this.bRoot)
{ {
Result = this.Content[EndPos].Math_Get_EndRangePos(true, _CurLine, _CurRange, SearchPos, Depth + 1); if(this.Content[EndPos].Type == para_Math_Composition) /// убрать
Result = this.Content[EndPos].Get_StartRangePos(_CurLine, _CurRange, SearchPos, Depth + 1);
else
Result = this.Content[EndPos].Math_Get_EndRangePos(true, _CurLine, _CurRange, SearchPos, Depth + 1);
if ( true === Result ) if ( true === Result )
SearchPos.Pos.Update(EndPos, Depth ); SearchPos.Pos.Update(EndPos, 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