Commit 331aec08 authored by Ilya.Kirillov's avatar Ilya.Kirillov

Исправлены баги в автоподборе таблицы по содержимому: в параграфе не...

Исправлены баги в автоподборе таблицы по содержимому: в параграфе не учитывались отступы, и неправильно рассчитывалсиь ширины колонок при заданной желаемой ширине таблицы.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@68117 954022d7-b5bf-4e40-9824-e11837661b57
parent 3c61f525
...@@ -1210,6 +1210,12 @@ Paragraph.prototype = ...@@ -1210,6 +1210,12 @@ Paragraph.prototype =
Item.Recalculate_MinMaxContentWidth(MinMax); Item.Recalculate_MinMaxContentWidth(MinMax);
} }
var ParaPr = this.Get_CompiledPr2(false).ParaPr;
var MinInd = ParaPr.Ind.Left + ParaPr.Ind.Right + ParaPr.Ind.FirstLine;
MinMax.nMinWidth += MinInd;
MinMax.nMaxWidth += MinInd;
// добавляем 0.001, чтобы избавиться от погрешностей // добавляем 0.001, чтобы избавиться от погрешностей
return { Min : ( MinMax.nMinWidth > 0 ? MinMax.nMinWidth + 0.001 : 0 ), Max : ( MinMax.nMaxWidth > 0 ? MinMax.nMaxWidth + 0.001 : 0 ) }; return { Min : ( MinMax.nMinWidth > 0 ? MinMax.nMinWidth + 0.001 : 0 ), Max : ( MinMax.nMaxWidth > 0 ? MinMax.nMaxWidth + 0.001 : 0 ) };
}, },
......
...@@ -2640,12 +2640,13 @@ CTable.prototype = ...@@ -2640,12 +2640,13 @@ CTable.prototype =
if ( false === MaxFlags[CurGridCol] ) if ( false === MaxFlags[CurGridCol] )
{ {
MaxFlags[CurGridCol] = true; MaxFlags[CurGridCol] = true;
MaxContent[CurGridCol] = CellW.W; MaxContent[CurGridCol] = Math.max(CellW.W, CellMin);
}
else
{
MaxContent[CurGridCol] = Math.max(MaxContent[CurGridCol], CellW.W, CellMin);
} }
else if ( MaxContent[CurGridCol] < CellW.W )
MaxContent[CurGridCol] = CellW.W;
} }
} }
else else
{ {
...@@ -2665,7 +2666,7 @@ CTable.prototype = ...@@ -2665,7 +2666,7 @@ CTable.prototype =
} }
// Если у нас в объединении несколько колонок, тогда явно записанная ширина ячейки не // Если у нас в объединении несколько колонок, тогда явно записанная ширина ячейки не
// перекрывает ширину ни одной из колонок, она всего лишь учавствует в определении // перекрывает ширину ни одной из колонок, она всего лишь участвует в определении
// максимальной ширины. // максимальной ширины.
if ( CellW.Type === tblwidth_Mm && CellW.W > CellMax ) if ( CellW.Type === tblwidth_Mm && CellW.W > CellMax )
CellMax = CellW.W; CellMax = CellW.W;
......
...@@ -419,8 +419,10 @@ CTable.prototype.private_RecalculateGrid = function() ...@@ -419,8 +419,10 @@ CTable.prototype.private_RecalculateGrid = function()
MaxFlags[CurGridCol] = true; MaxFlags[CurGridCol] = true;
MaxContent[CurGridCol] = CellWW; MaxContent[CurGridCol] = CellWW;
} }
else if ( MaxContent[CurGridCol] < CellWW ) else if (MaxContent[CurGridCol] < CellWW)
{
MaxContent[CurGridCol] = CellWW; MaxContent[CurGridCol] = CellWW;
}
} }
} }
else else
...@@ -522,6 +524,9 @@ CTable.prototype.private_RecalculateGrid = function() ...@@ -522,6 +524,9 @@ CTable.prototype.private_RecalculateGrid = function()
{ {
if ( true === MaxFlags[CurCol] ) if ( true === MaxFlags[CurCol] )
MaxContent[CurCol] = Math.max( 0, MaxContent[CurCol] - MinMargin[CurCol] ); MaxContent[CurCol] = Math.max( 0, MaxContent[CurCol] - MinMargin[CurCol] );
if (MaxContent[CurCol] < MinContent[CurCol])
MaxContent[CurCol] = MinContent[CurCol];
} }
// 2. Проследим, чтобы значения MinContent + MinMargin и MaxContent + MinMargin не превосходили // 2. Проследим, чтобы значения MinContent + MinMargin и MaxContent + MinMargin не превосходили
...@@ -595,15 +600,21 @@ CTable.prototype.private_RecalculateGrid = function() ...@@ -595,15 +600,21 @@ CTable.prototype.private_RecalculateGrid = function()
// Если у таблицы задана ширина, тогда ориентируемся по ширине, а если нет, тогда ориентируемся по // Если у таблицы задана ширина, тогда ориентируемся по ширине, а если нет, тогда ориентируемся по
// максимальным значениям. // максимальным значениям.
if ( tblwidth_Mm === TablePr.TableW.Type ) if (tblwidth_Mm === TablePr.TableW.Type && TablePr.TableW.W < MaxTableW && TablePr.TableW.W < MaxTableW)
{ {
var TableW = Math.max( SumMin, TablePr.TableW.W ); if (SumMin < TablePr.TableW.W)
var TableW2 = Math.min( SumMax, MaxTableW ); {
for ( var CurCol = 0; CurCol < GridCount; CurCol++ )
// Если TableW > SumMax, тогда меням в соотношении максимумов, в противном случае меняем в соотношении минимумов {
for ( var CurCol = 0; CurCol < GridCount; CurCol++ ) this.TableGridCalc[CurCol] = MinMargin[CurCol] + MinContent[CurCol] + (TablePr.TableW.W - SumMin) * MaxContent2[CurCol] / SumMaxContent2;
}
}
else
{ {
this.TableGridCalc[CurCol] *= TableW / TableW2; for ( var CurCol = 0; CurCol < GridCount; CurCol++ )
{
this.TableGridCalc[CurCol] = MinMargin[CurCol] + MinContent[CurCol];
}
} }
} }
} }
......
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