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

1. Поправила баг с зависанием при открытии документа: выставляем для пересчета...

1. Поправила баг с зависанием при открытии документа: выставляем для пересчета формулы текущий объект в PRS.RestartPageRecalcInfo.Object всегда для неинлайновой формулы. Для первого Range первой строки может прийти пересчет без учета плавающих объектов, а в связи с тем, что впоследствии они появятся, остальные параметры для пересчета (PRS.RecalcResult = recalcresult_PrevLine) могут затереться => произойдет зависание документа
2. Поправила расчет крайних отрезков на Recalculate при обтекании одной формулы картинок с разлиными настройками обтекания (например, обтекание сверху/снизу и обтекание по контуру)

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@63335 954022d7-b5bf-4e40-9824-e11837661b57
parent 2026334f
...@@ -7,10 +7,6 @@ ...@@ -7,10 +7,6 @@
var g_dMathArgSizeKoeff_1 = 0.76; var g_dMathArgSizeKoeff_1 = 0.76;
var g_dMathArgSizeKoeff_2 = 0.6498; // 0.76 * 0.855 var g_dMathArgSizeKoeff_2 = 0.6498; // 0.76 * 0.855
var WRAP_MATH_EMPTY = 0;
var WRAP_MATH_INSIDE = 1;
var WRAP_MATH_TOPBOTTOM = 2;
function CMathPropertiesSettings() function CMathPropertiesSettings()
{ {
this.brkBin = null; this.brkBin = null;
...@@ -746,10 +742,8 @@ ParaMath.prototype.Get_AlignToLine = function(_CurLine, _CurRange, _Page, _X, _X ...@@ -746,10 +742,8 @@ ParaMath.prototype.Get_AlignToLine = function(_CurLine, _CurRange, _Page, _X, _X
var wrapIndent = MathSettings.Get_WrapIndent(WrapState); var wrapIndent = MathSettings.Get_WrapIndent(WrapState);
var XLimits = {X: _X, XEnd: _XLimit}; var XStart = this.ParaMathRPI.XStart + MathSettings.Get_LeftMargin(WrapState);
this.private_UpdateXLimits(XLimits, false); var XEnd = this.ParaMathRPI.XEnd - MathSettings.Get_RightMargin(WrapState);
var XStart = XLimits.X, XEnd = XLimits.XEnd;
var Jc = this.Get_Align(); var Jc = this.Get_Align();
...@@ -1205,13 +1199,6 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1205,13 +1199,6 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
//здесь обновляем WrapState, исходя из этого параметра будем считать WrapIndent //здесь обновляем WrapState, исходя из этого параметра будем считать WrapIndent
this.PageInfo.UpdateCurrentWrap(DispDef, bInline); this.PageInfo.UpdateCurrentWrap(DispDef, bInline);
var X = PRS.X,
XEnd = PRS.XEnd;
if(bInline == false)
this.private_UpdateXLimits(PRS, true);
PRS.XRange = PRS.X;
if(this.ParaMathRPI.Wrap !== WRAP_MATH_EMPTY && this.ParaMathRPI.bStartRanges == true) if(this.ParaMathRPI.Wrap !== WRAP_MATH_EMPTY && this.ParaMathRPI.bStartRanges == true)
{ {
...@@ -1219,9 +1206,12 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1219,9 +1206,12 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
} }
else else
{ {
this.private_UpdateXLimits(PRS);
if(PrevLineObject == null || PrevLineObject == this) if(PrevLineObject == null || PrevLineObject == this)
{ {
PRS.RecalcResult = recalcresult_NextLine; PRS.RecalcResult = recalcresult_NextLine;
if(this.ParaMathRPI.bInline == true) // сделана проверка для случая с обтеканием картинки
PRS.Reset_RestartPageRecalcInfo(); PRS.Reset_RestartPageRecalcInfo();
} }
...@@ -1238,9 +1228,6 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1238,9 +1228,6 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
} }
} }
PRS.X = X;
PRS.XEnd = XEnd;
this.ParaMathRPI.ClearRecalculate(); this.ParaMathRPI.ClearRecalculate();
}; };
ParaMath.prototype.private_InitWrapSettings = function(PRS) ParaMath.prototype.private_InitWrapSettings = function(PRS)
...@@ -1256,16 +1243,31 @@ ParaMath.prototype.private_InitWrapSettings = function(PRS) ...@@ -1256,16 +1243,31 @@ ParaMath.prototype.private_InitWrapSettings = function(PRS)
if(this.ParaMathRPI.bStartRanges == true) if(this.ParaMathRPI.bStartRanges == true)
{ {
var WrapType = PRS.Ranges[0].typeLeft; this.ParaMathRPI.Wrap = WRAP_MATH_ON_SIDE;
for(var Pos = 0; Pos < PRS.Ranges.length; Pos++)
{
var WrapType = PRS.Ranges[Pos].typeLeft;
if(WrapType == WRAPPING_TYPE_TOP_AND_BOTTOM) if(WrapType == WRAPPING_TYPE_TOP_AND_BOTTOM)
{ {
this.ParaMathRPI.Wrap = WRAP_MATH_TOPBOTTOM; this.ParaMathRPI.Wrap = WRAP_MATH_TOPBOTTOM;
break;
}
else if(WrapType !== WRAPPING_TYPE_SQUARE && WrapType !== WRAPPING_TYPE_THROUGH && WrapType !== WRAPPING_TYPE_TIGHT)
{
this.ParaMathRPI.Wrap = WRAP_MATH_EMPTY;
break;
}
}
if(this.ParaMathRPI.Wrap == WRAP_MATH_TOPBOTTOM)
{
XStart = PRS.XStart; XStart = PRS.XStart;
XEnd = PRS.XLimit; XEnd = PRS.XLimit;
IndexRange = 0; IndexRange = 0;
} }
else if(WrapType == WRAPPING_TYPE_SQUARE || WrapType == WRAPPING_TYPE_THROUGH || WrapType == WRAPPING_TYPE_TIGHT) else if(this.ParaMathRPI.Wrap == WRAP_MATH_ON_SIDE) // WrapType == WRAPPING_TYPE_SQUARE || WrapType == WRAPPING_TYPE_THROUGH || WrapType == WRAPPING_TYPE_TIGHT
{ {
var Len = PRS.Ranges.length; var Len = PRS.Ranges.length;
...@@ -1286,8 +1288,6 @@ ParaMath.prototype.private_InitWrapSettings = function(PRS) ...@@ -1286,8 +1288,6 @@ ParaMath.prototype.private_InitWrapSettings = function(PRS)
} }
} }
this.ParaMathRPI.Wrap = WRAP_MATH_INSIDE;
} }
} }
else else
...@@ -1308,7 +1308,7 @@ ParaMath.prototype.private_RecalculateRangeWrap = function(PRS, ParaPr, Depth) ...@@ -1308,7 +1308,7 @@ ParaMath.prototype.private_RecalculateRangeWrap = function(PRS, ParaPr, Depth)
this.PageInfo.ReverseCurrentMaxW(PRS.Line); this.PageInfo.ReverseCurrentMaxW(PRS.Line);
} }
var bNextLine = this.ParaMathRPI.Wrap == WRAP_MATH_INSIDE && PRS.Range !== this.ParaMathRPI.IndexRange; var bNextLine = this.ParaMathRPI.Wrap == WRAP_MATH_ON_SIDE && PRS.Range !== this.ParaMathRPI.IndexRange;
if(PRS.Ranges.length > 0 && (bNextLine || this.ParaMathRPI.Wrap == WRAP_MATH_TOPBOTTOM)) if(PRS.Ranges.length > 0 && (bNextLine || this.ParaMathRPI.Wrap == WRAP_MATH_TOPBOTTOM))
{ {
...@@ -1321,7 +1321,7 @@ ParaMath.prototype.private_RecalculateRangeWrap = function(PRS, ParaPr, Depth) ...@@ -1321,7 +1321,7 @@ ParaMath.prototype.private_RecalculateRangeWrap = function(PRS, ParaPr, Depth)
} }
else else
{ {
if(PRS.Ranges.length > 0 && this.ParaMathRPI.Wrap == WRAP_MATH_INSIDE) if(PRS.Ranges.length > 0 && this.ParaMathRPI.Wrap == WRAP_MATH_ON_SIDE)
{ {
var CurrRange = PRS.Range; var CurrRange = PRS.Range;
...@@ -1334,6 +1334,11 @@ ParaMath.prototype.private_RecalculateRangeWrap = function(PRS, ParaPr, Depth) ...@@ -1334,6 +1334,11 @@ ParaMath.prototype.private_RecalculateRangeWrap = function(PRS, ParaPr, Depth)
PRS.Range = CurrRange; PRS.Range = CurrRange;
} }
PRS.X = this.ParaMathRPI.XStart;
PRS.XEnd = this.ParaMathRPI.XEnd;
this.private_UpdateXLimits(PRS);
this.private_RecalculateRoot(PRS, ParaPr, Depth); this.private_RecalculateRoot(PRS, ParaPr, Depth);
if(PRS.RecalcResult == recalcresult_PrevLine && PRS.Range < PRS.Ranges.length) if(PRS.RecalcResult == recalcresult_PrevLine && PRS.Range < PRS.Ranges.length)
...@@ -1343,7 +1348,7 @@ ParaMath.prototype.private_RecalculateRangeWrap = function(PRS, ParaPr, Depth) ...@@ -1343,7 +1348,7 @@ ParaMath.prototype.private_RecalculateRangeWrap = function(PRS, ParaPr, Depth)
if(PRS.bMathWordLarge == true) if(PRS.bMathWordLarge == true)
{ {
if(this.ParaMathRPI.Wrap == WRAP_MATH_INSIDE) if(this.ParaMathRPI.Wrap == WRAP_MATH_ON_SIDE)
{ {
this.ParaMathRPI.Wrap = WRAP_MATH_TOPBOTTOM; this.ParaMathRPI.Wrap = WRAP_MATH_TOPBOTTOM;
this.private_SetBreakRecalculate(PRS); this.private_SetBreakRecalculate(PRS);
...@@ -1414,34 +1419,31 @@ ParaMath.prototype.private_RecalculateRoot = function(PRS, ParaPr, Depth) ...@@ -1414,34 +1419,31 @@ ParaMath.prototype.private_RecalculateRoot = function(PRS, ParaPr, Depth)
this.UpdateWidthLine(PRS, WidthLine); this.UpdateWidthLine(PRS, WidthLine);
} }
}; };
ParaMath.prototype.private_UpdateXLimits = function(Struct, bRecalculate) ParaMath.prototype.private_UpdateXLimits = function(PRS)
{ {
var MathSettings = Get_WordDocumentDefaultMathSettings(); var MathSettings = Get_WordDocumentDefaultMathSettings();
Struct.X = this.ParaMathRPI.XStart;
Struct.XEnd = this.ParaMathRPI.XEnd;
var WrapState = this.PageInfo.GetCurrentWrapState(); var WrapState = this.PageInfo.GetCurrentWrapState();
Struct.X += MathSettings.Get_LeftMargin(WrapState); PRS.X += MathSettings.Get_LeftMargin(WrapState);
Struct.XEnd -= MathSettings.Get_RightMargin(WrapState); PRS.XEnd -= MathSettings.Get_RightMargin(WrapState);
if(bRecalculate == true)
{
var WrapIndent = MathSettings.Get_WrapIndent(WrapState); var WrapIndent = MathSettings.Get_WrapIndent(WrapState);
Struct.WrapIndent = WrapIndent; PRS.WrapIndent = WrapIndent;
if(this.Root.IsStartLine(Struct.Line) == false) if(this.Root.IsStartLine(PRS.Line) == false)
{ {
Struct.X += WrapIndent; PRS.X += WrapIndent;
Struct.bCompareWrapIndent = false; PRS.bCompareWrapIndent = false;
} }
else else
{ {
Struct.bCompareWrapIndent = true; PRS.bCompareWrapIndent = true;
}
} }
PRS.XRange = PRS.X;
}; };
ParaMath.prototype.UpdateInfoForBreak = function(PRS, Line) ParaMath.prototype.UpdateInfoForBreak = function(PRS, Line)
{ {
...@@ -3428,9 +3430,6 @@ function CMathRecalculateInfo() ...@@ -3428,9 +3430,6 @@ function CMathRecalculateInfo()
this.bRecalcCtrPrp = false; // необходимо для пересчета CtrPrp (когда изменились текстовые настройки у первого элемнента, ctrPrp нужно пересчитать заново для всей формулы) this.bRecalcCtrPrp = false; // необходимо для пересчета CtrPrp (когда изменились текстовые настройки у первого элемнента, ctrPrp нужно пересчитать заново для всей формулы)
this.bCorrect_FontSize = false; this.bCorrect_FontSize = false;
//this.RangesX0 = 0;
//this.RangesX1 = 0;
this.Wrap = WRAP_MATH_EMPTY; this.Wrap = WRAP_MATH_EMPTY;
this.XStart = 0; this.XStart = 0;
this.XEnd = 0; this.XEnd = 0;
...@@ -3446,9 +3445,6 @@ function CMathRecalculateInfo() ...@@ -3446,9 +3445,6 @@ function CMathRecalculateInfo()
} }
CMathRecalculateInfo.prototype.ResetInfoRanges = function() CMathRecalculateInfo.prototype.ResetInfoRanges = function()
{ {
/*this.RangesX0 = 0;
this.RangesX1 = 0;*/
this.Wrap = WRAP_MATH_EMPTY; this.Wrap = WRAP_MATH_EMPTY;
this.XStart = 0; this.XStart = 0;
this.XEnd = 0; this.XEnd = 0;
......
...@@ -202,9 +202,9 @@ var ALIGN_MARGIN = 1; ...@@ -202,9 +202,9 @@ var ALIGN_MARGIN = 1;
var ALIGN_WRAP = 2; var ALIGN_WRAP = 2;
var ALIGN_EMPTY = 3; var ALIGN_EMPTY = 3;
var MATH_LEFT_MARGIN = 0; var WRAP_MATH_EMPTY = 0;
var MATH_RIGHT_MARGIN = 1; var WRAP_MATH_ON_SIDE = 1;
var MATH_WRAP_INDENT = 2; var WRAP_MATH_TOPBOTTOM = 2;
var MATH_SIZE = 0; var MATH_SIZE = 0;
var MATH_BOUNDS_MEASURES = 1; var MATH_BOUNDS_MEASURES = 1;
\ No newline at end of file
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