Commit 052de700 authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Исправлен баг с рассчетом 100% ширины таблицы. Исправлен баг с рассчетом...

Исправлен баг с рассчетом 100% ширины таблицы. Исправлен баг с рассчетом ширины таблицы, когда заданная ширина превышает максимальную.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@68913 954022d7-b5bf-4e40-9824-e11837661b57
parent 99423bbf
......@@ -567,7 +567,10 @@ CTable.prototype.Get_TableOffsetCorrection = function()
{
return 0;
};
CTable.prototype.Get_RightTableOffsetCorrection = function()
{
return 0;
};
CTable.prototype.Selection_Draw_Page = function(CurPage)
{
if (false === this.Selection.Use)
......
......@@ -2185,6 +2185,46 @@ CTable.prototype =
return -X;
},
Get_RightTableOffsetCorrection : function()
{
var X = 0;
if (true === this.Parent.Is_TableCellContent())
return 0;
var Row = this.Content[0];
var Cell = Row.Get_Cell(Row.Get_CellsCount() - 1);
var Margins = Cell.Get_Margins();
var CellSpacing = Row.Get_CellSpacing();
if (null != CellSpacing)
{
var TableBorder_Right = this.Get_Borders().Right;
if (border_None != TableBorder_Right.Value)
X += TableBorder_Right.Size / 2;
X += CellSpacing;
var CellBorder_Right = Cell.Get_Borders().Right;
if (border_None != CellBorder_Right.Value)
X += CellBorder_Right.Size;
X += Margins.Right.W;
}
else
{
var TableBorder_Right = this.Get_Borders().Right;
var CellBorder_Right = Cell.Get_Borders().Right;
var Result_Border = this.Internal_CompareBorders(TableBorder_Right, CellBorder_Right, true, false);
if (border_None != Result_Border.Value)
X += Math.max(Result_Border.Size / 2, Margins.Right.W);
else
X += Margins.Right.W;
}
return X;
},
// Получаем первый параграф первой ячейки. (Нужно для контроля ContextualSpacing)
Get_FirstParagraph : function()
{
......
......@@ -205,7 +205,7 @@ CTable.prototype.private_RecalculateGrid = function()
SumGrid[Index] = TempSum;
}
var PctWidth = this.XLimit - this.X;
var PctWidth = this.XLimit - this.X - this.Get_TableOffsetCorrection() + this.Get_RightTableOffsetCorrection();
var MinWidth = this.Internal_Get_TableMinWidth();
var TableW = 0;
if (tblwidth_Auto === TablePr.TableW.Type)
......@@ -635,6 +635,9 @@ CTable.prototype.private_RecalculateGrid = function()
SumMax += MinMargin[CurCol] + MinContent[CurCol] + MaxContent2[CurCol];
}
if ((tblwidth_Mm === TablePr.TableW.Type || tblwidth_Pct === TablePr.TableW.Type) && MaxTableW < TableW)
MaxTableW = TableW;
if ( SumMin < MaxTableW )
{
// SumMin < MaxTableW, значит у нас есть свободное пространство для распределения
......@@ -659,13 +662,23 @@ CTable.prototype.private_RecalculateGrid = function()
// Если у таблицы задана ширина, тогда ориентируемся по ширине, а если нет, тогда ориентируемся по
// максимальным значениям.
if ((tblwidth_Mm === TablePr.TableW.Type || tblwidth_Pct === TablePr.TableW.Type) && TableW < MaxTableW)
if (tblwidth_Mm === TablePr.TableW.Type || tblwidth_Pct === TablePr.TableW.Type)
{
if (SumMin < TableW)
{
for ( var CurCol = 0; CurCol < GridCount; CurCol++ )
if (SumMax < TableW)
{
this.TableGridCalc[CurCol] = MinMargin[CurCol] + MinContent[CurCol] + (TableW - SumMin) * MaxContent2[CurCol] / SumMaxContent2;
for ( var CurCol = 0; CurCol < GridCount; CurCol++ )
{
this.TableGridCalc[CurCol] = MinMargin[CurCol] + MaxContent[CurCol] + (TableW - SumMax) * (MinMargin[CurCol] + MaxContent[CurCol]) / SumMax;
}
}
else
{
for ( var CurCol = 0; CurCol < GridCount; CurCol++ )
{
this.TableGridCalc[CurCol] = MinMargin[CurCol] + MinContent[CurCol] + (TableW - SumMin) * MaxContent2[CurCol] / SumMaxContent2;
}
}
}
else
......
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