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

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

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

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@62830 954022d7-b5bf-4e40-9824-e11837661b57
parent d9c54826
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
*/ */
var g_dMathArgSizeKoeff_1 = 0.76; var g_dMathArgSizeKoeff_1 = 0.76;
var g_dMathArgSizeKoeff_2 = 0.76 * 0.855; var g_dMathArgSizeKoeff_2 = 0.6498; // 0.76 * 0.855
function CMathPropertiesSettings() function CMathPropertiesSettings()
{ {
...@@ -480,6 +480,7 @@ function ParaMath() ...@@ -480,6 +480,7 @@ function ParaMath()
this.bSelectionUse = false; this.bSelectionUse = false;
this.Paragraph = null; this.Paragraph = null;
this.bFastRecalculate = true;
this.NearPosArray = []; this.NearPosArray = [];
...@@ -666,6 +667,8 @@ ParaMath.prototype.Add = function(Item) ...@@ -666,6 +667,8 @@ ParaMath.prototype.Add = function(Item)
if ((para_Text === Type || para_Space === Type) && null !== NewElement) if ((para_Text === Type || para_Space === Type) && null !== NewElement)
{ {
this.bFastRecalculate = oContent.bOneLine == false; // многострочный контент => можно осуществлять быстрый пересчет
// Пробуем произвести автозамену // Пробуем произвести автозамену
oContent.Process_AutoCorrect(NewElement); oContent.Process_AutoCorrect(NewElement);
} }
...@@ -1068,6 +1071,8 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1068,6 +1071,8 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
// Paragraph.js // Paragraph.js
// CRunRecalculateObject.Compare // CRunRecalculateObject.Compare
if(PRS.bFastRecalculate == true && this.bFastRecalculate == false)
return;
if ( this.Paragraph !== PRS.Paragraph ) if ( this.Paragraph !== PRS.Paragraph )
{ {
...@@ -1190,7 +1195,16 @@ ParaMath.prototype.UpdateInfoForBreak = function(PRS) ...@@ -1190,7 +1195,16 @@ ParaMath.prototype.UpdateInfoForBreak = function(PRS)
ParaMath.prototype.Save_MathInfo = function(Copy) ParaMath.prototype.Save_MathInfo = function(Copy)
{ {
var RecalculateObject = new CMathRecalculateObject(); var RecalculateObject = new CMathRecalculateObject();
RecalculateObject.Fill(this.PageInfo, this.ParaMathRPI.bInline, this.Get_Align());
var StructRecalc =
{
bFastRecalculate: this.bFastRecalculate,
PageInfo: this.PageInfo,
bInline: this.ParaMathRPI.bInline,
Align: this.Get_Align()
};
RecalculateObject.Fill(StructRecalc);
return RecalculateObject; return RecalculateObject;
}; };
...@@ -3204,18 +3218,24 @@ function CMathRecalculateObject() ...@@ -3204,18 +3218,24 @@ function CMathRecalculateObject()
this.WrapState = ALIGN_EMPTY; this.WrapState = ALIGN_EMPTY;
this.MaxW = 0; this.MaxW = 0;
this.bWordLarge = false; this.bWordLarge = false;
this.bFastRecalculate = true; /*если добавляем буквы во внутренний контент, который не бьется на строки, то отменяем быстрый пересчет,
т.к. высота контента может поменяться (она рассчитывается точно исходя из размеров внутр элементов)*/
this.bInline = false; this.bInline = false;
this.align = align_Justify; this.Align = align_Justify;
} }
CMathRecalculateObject.prototype.Fill = function(PageInfo, bInline, align) CMathRecalculateObject.prototype.Fill = function(StructRecalc)
{ {
this.bFastRecalculate = StructRecalc.bFastRecalculate;
this.bInline = StructRecalc.bInline;
this.Align = StructRecalc.Align;
var PageInfo = StructRecalc.PageInfo;
this.WrapState = PageInfo.GetCurrentWrapState(); this.WrapState = PageInfo.GetCurrentWrapState();
this.MaxW = PageInfo.GetCurrentMaxWidthAllLines(); this.MaxW = PageInfo.GetCurrentMaxWidthAllLines();
this.bWordLarge = PageInfo.GetCurrentStateWordLarge(); this.bWordLarge = PageInfo.GetCurrentStateWordLarge();
this.bInline = bInline;
this.align = align;
}; };
CMathRecalculateObject.prototype.Load_MathInfo = function(PageInfo) CMathRecalculateObject.prototype.Load_MathInfo = function(PageInfo)
{ {
...@@ -3228,6 +3248,9 @@ CMathRecalculateObject.prototype.Compare = function(PageInfo) ...@@ -3228,6 +3248,9 @@ CMathRecalculateObject.prototype.Compare = function(PageInfo)
{ {
var result = true; var result = true;
if(this.bFastRecalculate == false)
result = false;
if(this.WrapState !== PageInfo.GetCurrentWrapState()) if(this.WrapState !== PageInfo.GetCurrentWrapState())
result = false; result = false;
...@@ -3238,7 +3261,7 @@ CMathRecalculateObject.prototype.Compare = function(PageInfo) ...@@ -3238,7 +3261,7 @@ CMathRecalculateObject.prototype.Compare = function(PageInfo)
var LargeComposition = this.bWordLarge == true && true == PageInfo.GetCurrentStateWordLarge(); var LargeComposition = this.bWordLarge == true && true == PageInfo.GetCurrentStateWordLarge();
if(LargeComposition == false && this.bInline == false && this.align == align_Justify && DiffMaxW > 0.001) if(LargeComposition == false && this.bInline == false && this.Align == align_Justify && DiffMaxW > 0.001)
result = false; result = false;
return result; return result;
......
...@@ -3942,8 +3942,6 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -3942,8 +3942,6 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
var bNoOneBreakOperator = PRS.bNoOneBreakOperator; var bNoOneBreakOperator = PRS.bNoOneBreakOperator;
var W_Before = PRS.WordLen + PRS.SpaceLen + PRS.X;
Item.Recalculate_Range(PRS, ParaPr, Depth + 1); Item.Recalculate_Range(PRS, ParaPr, Depth + 1);
if(Type == para_Math_Composition) if(Type == para_Math_Composition)
......
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