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 =
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, чтобы избавиться от погрешностей
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 =
if ( false === MaxFlags[CurGridCol] )
{
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
{
......@@ -2665,7 +2666,7 @@ CTable.prototype =
}
// Если у нас в объединении несколько колонок, тогда явно записанная ширина ячейки не
// перекрывает ширину ни одной из колонок, она всего лишь учавствует в определении
// перекрывает ширину ни одной из колонок, она всего лишь участвует в определении
// максимальной ширины.
if ( CellW.Type === tblwidth_Mm && CellW.W > CellMax )
CellMax = CellW.W;
......
......@@ -419,10 +419,12 @@ CTable.prototype.private_RecalculateGrid = function()
MaxFlags[CurGridCol] = true;
MaxContent[CurGridCol] = CellWW;
}
else if ( MaxContent[CurGridCol] < CellWW )
else if (MaxContent[CurGridCol] < CellWW)
{
MaxContent[CurGridCol] = CellWW;
}
}
}
else
{
var SumSpanMinContent = 0;
......@@ -522,6 +524,9 @@ CTable.prototype.private_RecalculateGrid = function()
{
if ( true === MaxFlags[CurCol] )
MaxContent[CurCol] = Math.max( 0, MaxContent[CurCol] - MinMargin[CurCol] );
if (MaxContent[CurCol] < MinContent[CurCol])
MaxContent[CurCol] = MinContent[CurCol];
}
// 2. Проследим, чтобы значения MinContent + MinMargin и MaxContent + MinMargin не превосходили
......@@ -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)
{
if (SumMin < TablePr.TableW.W)
{
var TableW = Math.max( SumMin, TablePr.TableW.W );
var TableW2 = Math.min( SumMax, MaxTableW );
// Если TableW > SumMax, тогда меням в соотношении максимумов, в противном случае меняем в соотношении минимумов
for ( var CurCol = 0; CurCol < GridCount; CurCol++ )
{
this.TableGridCalc[CurCol] *= TableW / TableW2;
this.TableGridCalc[CurCol] = MinMargin[CurCol] + MinContent[CurCol] + (TablePr.TableW.W - SumMin) * MaxContent2[CurCol] / SumMaxContent2;
}
}
else
{
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