Commit a9db7b02 authored by Ilya Kirillov's avatar Ilya Kirillov

Bug #32051 Исправлен баг с расчетом табов.

parent ec040d4a
...@@ -1885,7 +1885,7 @@ Paragraph.prototype.private_RecalculateRangeEndPos = function(PRS, PRP, Dept ...@@ -1885,7 +1885,7 @@ Paragraph.prototype.private_RecalculateRangeEndPos = function(PRS, PRP, Dept
this.Lines[CurLine].Set_RangeEndPos( CurRange, CurPos ); this.Lines[CurLine].Set_RangeEndPos( CurRange, CurPos );
}; };
Paragraph.prototype.private_RecalculateGetTabPos = function(X, ParaPr, CurPage) Paragraph.prototype.private_RecalculateGetTabPos = function(X, ParaPr, CurPage, NumTab)
{ {
var PRS = this.m_oPRSW; var PRS = this.m_oPRSW;
...@@ -1906,10 +1906,9 @@ Paragraph.prototype.private_RecalculateGetTabPos = function(X, ParaPr, CurPage) ...@@ -1906,10 +1906,9 @@ Paragraph.prototype.private_RecalculateGetTabPos = function(X, ParaPr, CurPage)
var Tab = ParaPr.Tabs.Get(Index); var Tab = ParaPr.Tabs.Get(Index);
var TabPos = Tab.Pos + PageStart.X; var TabPos = Tab.Pos + PageStart.X;
// Здесь 0.001 убавляется из-за замечания ниже if ( true === bCheckLeft && TabPos > PageStart.X + ParaPr.Ind.Left )
if ( true === bCheckLeft && TabPos > PageStart.X + ParaPr.Ind.Left - 0.001 )
{ {
TabsPos.push( new CParaTab(tab_Left, ParaPr.Ind.Left - 0.001) ); TabsPos.push( new CParaTab(tab_Left, ParaPr.Ind.Left ) );
bCheckLeft = false; bCheckLeft = false;
} }
...@@ -1917,9 +1916,8 @@ Paragraph.prototype.private_RecalculateGetTabPos = function(X, ParaPr, CurPage) ...@@ -1917,9 +1916,8 @@ Paragraph.prototype.private_RecalculateGetTabPos = function(X, ParaPr, CurPage)
TabsPos.push( Tab ); TabsPos.push( Tab );
} }
// Здесь 0.001 убавляется из-за замечания ниже
if ( true === bCheckLeft ) if ( true === bCheckLeft )
TabsPos.push( new CParaTab(tab_Left, ParaPr.Ind.Left - 0.001) ); TabsPos.push( new CParaTab(tab_Left, ParaPr.Ind.Left ) );
TabsCount = TabsPos.length; TabsCount = TabsPos.length;
...@@ -1929,8 +1927,14 @@ Paragraph.prototype.private_RecalculateGetTabPos = function(X, ParaPr, CurPage) ...@@ -1929,8 +1927,14 @@ Paragraph.prototype.private_RecalculateGetTabPos = function(X, ParaPr, CurPage)
var TempTab = TabsPos[Index]; var TempTab = TabsPos[Index];
// TODO: Пока здесь сделаем поправку на погрешность. Когда мы сделаем так, чтобы все наши значения хранились // TODO: Пока здесь сделаем поправку на погрешность. Когда мы сделаем так, чтобы все наши значения хранились
// в тех же единицах, что и в формате Docx, тогда и здесь можно будет вернуть строгое равенство (см. баг 22586) // в тех же единицах, что и в формате Docx, тогда и здесь можно будет вернуть обычное сравнение (см. баг 22586)
if ( X < TempTab.Pos + PageStart.X + 0.001 ) // Разница с NumTab возникла из-за бага 22586, везде нестрогое оставлять нельзя из-за бага 32051.
var _X1 = (X * 72 * 20) | 0;
var _X2 = ((TempTab.Pos + PageStart.X) * 72 * 20) | 0;
//if (X < TempTab.Pos + PageStart.X)
if ((true === NumTab && _X1 <= _X2) || (true !== NumTab && _X1 < _X2))
{ {
Tab = TempTab; Tab = TempTab;
break; break;
...@@ -1959,8 +1963,7 @@ Paragraph.prototype.private_RecalculateGetTabPos = function(X, ParaPr, CurPage) ...@@ -1959,8 +1963,7 @@ Paragraph.prototype.private_RecalculateGetTabPos = function(X, ParaPr, CurPage)
} }
else else
{ {
// Здесь 0.001 добавляется из-за замечания выше NewX = Tab.Pos + PageStart.X;
NewX = Tab.Pos + PageStart.X + 0.001;
} }
return { NewX : NewX, TabValue : ( null === Tab ? tab_Left : Tab.Value ), DefaultTab : (null === Tab ? true : false) }; return { NewX : NewX, TabValue : ( null === Tab ? tab_Left : Tab.Value ), DefaultTab : (null === Tab ? true : false) };
...@@ -2739,7 +2742,7 @@ CParagraphRecalculateStateWrap.prototype = ...@@ -2739,7 +2742,7 @@ CParagraphRecalculateStateWrap.prototype =
} }
case numbering_suff_Tab: case numbering_suff_Tab:
{ {
var NewX = Para.private_RecalculateGetTabPos(X, ParaPr, CurPage).NewX; var NewX = Para.private_RecalculateGetTabPos(X, ParaPr, CurPage, true).NewX;
NumberingItem.WidthSuff = NewX - X; NumberingItem.WidthSuff = NewX - X;
......
...@@ -2864,7 +2864,7 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -2864,7 +2864,7 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
SpaceLen = 0; SpaceLen = 0;
WordLen = 0; WordLen = 0;
var TabPos = Para.private_RecalculateGetTabPos(X, ParaPr, PRS.Page); var TabPos = Para.private_RecalculateGetTabPos(X, ParaPr, PRS.Page, false);
var NewX = TabPos.NewX; var NewX = TabPos.NewX;
var TabValue = TabPos.TabValue; var TabValue = TabPos.TabValue;
......
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