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

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

Поправила баг : если в формуле два мат объекта рядом, то Gaps правильно расчитывались только при втором перерасчете в связи с наличием пустого Run между объектами: теперь выыставляем Gaps u пересчитываем размер в двух разных циклах

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@58096 954022d7-b5bf-4e40-9824-e11837661b57
parent 68b8a666
...@@ -1454,11 +1454,6 @@ ParaMath.prototype = ...@@ -1454,11 +1454,6 @@ ParaMath.prototype =
{ {
// TODO: ParaMath.Set_SelectionContentPos // TODO: ParaMath.Set_SelectionContentPos
//console.log("Set_SelectionContentPos");
/*if(this.bSelectionUse)
this.Selection_Remove();*/
this.Root.Set_SelectionContentPos(StartContentPos, EndContentPos, Depth, StartFlag, EndFlag); this.Root.Set_SelectionContentPos(StartContentPos, EndContentPos, Depth, StartFlag, EndFlag);
this.bSelectionUse = true; this.bSelectionUse = true;
}, },
...@@ -1466,6 +1461,7 @@ ParaMath.prototype = ...@@ -1466,6 +1461,7 @@ ParaMath.prototype =
Selection_IsUse : function() Selection_IsUse : function()
{ {
// TODO: ParaMath.Selection_IsUse // TODO: ParaMath.Selection_IsUse
return this.bSelectionUse; return this.bSelectionUse;
}, },
...@@ -1478,8 +1474,6 @@ ParaMath.prototype = ...@@ -1478,8 +1474,6 @@ ParaMath.prototype =
// TODO: ParaMath.Selection_Remove // TODO: ParaMath.Selection_Remove
this.bSelectionUse = false; this.bSelectionUse = false;
console.log("Selection_Remove");
this.Root.Selection_Remove(); this.Root.Selection_Remove();
}, },
Select_All : function(Direction) Select_All : function(Direction)
......
...@@ -4330,7 +4330,6 @@ ParaRun.prototype = ...@@ -4330,7 +4330,6 @@ ParaRun.prototype =
Selection_Stop : function() Selection_Stop : function()
{ {
}, },
Selection_Remove : function() Selection_Remove : function()
{ {
var Selection = this.State.Selection; var Selection = this.State.Selection;
......
...@@ -4006,6 +4006,78 @@ CMathContent.prototype = ...@@ -4006,6 +4006,78 @@ CMathContent.prototype =
this.WidthToElement.length = 0; this.WidthToElement.length = 0;
var GapsInfo = new CMathGapsInfo(oMeasure, this, this.Compiled_ArgSz.value);
if (!this.bRoot && this.content.length == 0)
this.fillPlaceholders();
this.RecalcInfo.bEqqArray = RPI.bEqqArray;
var lng = this.content.length;
this.size.SetZero();
this.InfoPoints.SetDefault();
for(var pos = 0; pos < lng; pos++)
{
if(this.content[pos].Type == para_Math_Composition)
{
this.content[pos].Set_CompiledCtrPrp(this.ParaMath);
this.content[pos].SetGaps(GapsInfo);
}
else if(this.content[pos].Type == para_Math_Run)
this.content[pos].Math_SetGaps(GapsInfo);
}
if(GapsInfo.Current !== null)
GapsInfo.Current.GapRight = 0;
for(var pos = 0; pos < lng; pos++)
{
if(this.content[pos].Type == para_Math_Composition)
{
var NewRPI = RPI.Copy();
NewRPI.bEqqArray = false;
this.content[pos].Resize(oMeasure, this, ParaMath, NewRPI, this.Compiled_ArgSz);
if(RPI.bEqqArray)
this.InfoPoints.ContentPoints.UpdatePoint(this.content[pos].size.width);
}
else if(this.content[pos].Type == para_Math_Run)
this.content[pos].Math_Recalculate(oMeasure, this, ParaMath.Paragraph, RPI, this.Compiled_ArgSz, this.InfoPoints.ContentPoints);
this.WidthToElement[pos] = this.size.width;
var oSize = this.content[pos].size;
this.size.width += oSize.width;
var oDescent = oSize.height - oSize.ascent,
SizeDescent = this.size.height - this.size.ascent;
this.size.ascent = this.size.ascent > oSize.ascent ? this.size.ascent : oSize.ascent;
this.size.height = SizeDescent < oDescent ? oDescent + this.size.ascent : SizeDescent + this.size.ascent;
}
},
M_Resize: function(oMeasure, Parent, ParaMath, RPI, ArgSize) // если делать один цикл for для Resize, то надо избавиться от WidthToElement,
// т.к. корректно рассчитывать не получается, либо выставлять WidthToElement для пустыx Run (которые идут после мат объекта) на recalculateSize_2 мат объекта
{
if(ArgSize !== null && ArgSize !== undefined)
{
this.Compiled_ArgSz.value = this.ArgSize.value;
this.Compiled_ArgSz.Merge(ArgSize);
}
this.ParaMath = ParaMath;
if(Parent !== null)
{
this.bRoot = false;
this.Parent = Parent;
}
this.WidthToElement.length = 0;
var GapsInfo = new CMathGapsInfo(oMeasure, this, this.Compiled_ArgSz.value); var GapsInfo = new CMathGapsInfo(oMeasure, this, this.Compiled_ArgSz.value);
...@@ -4020,8 +4092,14 @@ CMathContent.prototype = ...@@ -4020,8 +4092,14 @@ CMathContent.prototype =
this.InfoPoints.SetDefault(); this.InfoPoints.SetDefault();
var PosUpdate = -1;
var bEmptyRun;
for(var pos = 0; pos < lng; pos++) for(var pos = 0; pos < lng; pos++)
{ {
bEmptyRun = this.content[pos].Type == para_Math_Run && this.content[pos].Is_Empty();
if(this.content[pos].Type == para_Math_Composition) if(this.content[pos].Type == para_Math_Composition)
{ {
this.content[pos].Set_CompiledCtrPrp(this.ParaMath); this.content[pos].Set_CompiledCtrPrp(this.ParaMath);
...@@ -4030,16 +4108,26 @@ CMathContent.prototype = ...@@ -4030,16 +4108,26 @@ CMathContent.prototype =
else if(this.content[pos].Type == para_Math_Run) else if(this.content[pos].Type == para_Math_Run)
this.content[pos].Math_SetGaps(GapsInfo); this.content[pos].Math_SetGaps(GapsInfo);
if(pos > 0) // если пропускаем расчет одного из элементов, то WidthToElement будет неправильно выставлен
this.recalculateSize_2(pos-1, oMeasure, Parent, ParaMath, RPI); // если выставлять WidthToElement на recalculateSize_2, то WidthToElement не будет выставлен для пустых Run
this.WidthToElement[pos] = this.size.width;
// для случая если между двумя мат объектами стоит пустой Run, то Gaps должны рассчитываться между двумя этими мат объектами
// и при расчете должны сначала выставиться у правого мат объекта Gaps, а потом рассчитываться размер левого объекта
if(!bEmptyRun)
{
if(PosUpdate >= 0)
this.recalculateSize_2(PosUpdate, oMeasure, Parent, ParaMath, RPI);
PosUpdate = pos;
}
} }
if(GapsInfo.Current !== null) if(GapsInfo.Current !== null)
GapsInfo.Current.GapRight = 0; GapsInfo.Current.GapRight = 0;
if(lng > 0) if(PosUpdate != -1)
this.recalculateSize_2(lng-1, oMeasure, Parent, ParaMath, RPI); this.recalculateSize_2(PosUpdate, oMeasure, Parent, ParaMath, RPI);
}, },
recalculateSize_2: function(pos, oMeasure, Parent, ParaMath, RPI) recalculateSize_2: function(pos, oMeasure, Parent, ParaMath, RPI)
...@@ -4057,8 +4145,6 @@ CMathContent.prototype = ...@@ -4057,8 +4145,6 @@ CMathContent.prototype =
else if(this.content[pos].Type == para_Math_Run) else if(this.content[pos].Type == para_Math_Run)
this.content[pos].Math_Recalculate(oMeasure, this, ParaMath.Paragraph, RPI, this.Compiled_ArgSz, this.InfoPoints.ContentPoints); this.content[pos].Math_Recalculate(oMeasure, this, ParaMath.Paragraph, RPI, this.Compiled_ArgSz, this.InfoPoints.ContentPoints);
this.WidthToElement[pos] = this.size.width;
var oSize = this.content[pos].size; var oSize = this.content[pos].size;
this.size.width += oSize.width; this.size.width += oSize.width;
...@@ -4528,12 +4614,6 @@ CMathContent.prototype = ...@@ -4528,12 +4614,6 @@ CMathContent.prototype =
}, },
Selection_DrawRange: function(_CurLine, _CurRange, SelectionDraw) Selection_DrawRange: function(_CurLine, _CurRange, SelectionDraw)
{ {
/*var result = this.GetSelectContent();
var Start = result.Start,
End = result.End,
oCont = result.Content;*/
var Start = this.Selection.Start, var Start = this.Selection.Start,
End = this.Selection.End; End = this.Selection.End;
...@@ -4560,18 +4640,8 @@ CMathContent.prototype = ...@@ -4560,18 +4640,8 @@ CMathContent.prototype =
for(var i = 0; i < this.content.length; i++) for(var i = 0; i < this.content.length; i++)
{ {
/*if( i >= Start && i < End + 1)
SelectionDraw.FindStart = false;
else
SelectionDraw.FindStart = true;*/
DrawSelection = i >= Start && i <= End ? true : false; DrawSelection = i >= Start && i <= End ? true : false;
/*if(i >= Start && i < End )
{
DrawSelection = true;
}
else
DrawSelection = false;*/
if(DrawSelection == false) if(DrawSelection == false)
this.content[i].Selection_Remove(); this.content[i].Selection_Remove();
...@@ -4911,12 +4981,6 @@ CMathContent.prototype = ...@@ -4911,12 +4981,6 @@ CMathContent.prototype =
} }
} }
/*if(this.bRoot)
{
var pos = SearchPos.Pos.Get(Depth+1);
console.log("SearchPos.Pos " + pos);
}*/
return result; return result;
}, },
Get_ParaContentPos: function(bSelection, bStart, ContentPos) Get_ParaContentPos: function(bSelection, bStart, ContentPos)
......
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