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

Исправлен баг с обработкой плохих таблиц.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@68005 954022d7-b5bf-4e40-9824-e11837661b57
parent f6a2b0a4
...@@ -696,15 +696,10 @@ CDocumentContent.prototype = ...@@ -696,15 +696,10 @@ CDocumentContent.prototype =
bFlow = true; bFlow = true;
if ( true === this.RecalcInfo.Can_RecalcObject() ) if ( true === this.RecalcInfo.Can_RecalcObject() )
{ {
if ( ( 0 === Index && 0 === PageIndex ) || Index != StartIndex || (1 == PageIndex && true === this.Is_TableCellContent() && false === this.Parent.Is_EmptyFirstPage()) ) Element.Set_DocumentIndex( Index );
{ Element.Reset(X, Y, XLimit, YLimit, PageIndex, 0, 1);
Element.Set_DocumentIndex( Index ); var TempRecalcResult = Element.Recalculate_Page(0);
Element.Reset( X, Y, XLimit, YLimit, PageIndex ); this.RecalcInfo.Set_FlowObject(Element, 0, TempRecalcResult, -1, {X : X, Y : Y, XLimit: XLimit, YLimit : YLimit});
}
this.RecalcInfo.FlowObjectPage = 0;
this.RecalcInfo.FlowObject = Element;
this.RecalcInfo.RecalcResult = Element.Recalculate_Page( PageIndex );
if(this.DrawingObjects) if(this.DrawingObjects)
this.DrawingObjects.addFloatTable(new CFlowTable(Element, PageIndex)); this.DrawingObjects.addFloatTable(new CFlowTable(Element, PageIndex));
...@@ -719,61 +714,43 @@ CDocumentContent.prototype = ...@@ -719,61 +714,43 @@ CDocumentContent.prototype =
if ( true === this.RecalcInfo.FlowObjectPageBreakBefore ) if ( true === this.RecalcInfo.FlowObjectPageBreakBefore )
{ {
// Добавляем начало таблицы в конец страницы так, чтобы не убралось ничего // Добавляем начало таблицы в конец страницы так, чтобы не убралось ничего
Element.Set_DocumentIndex( Index ); Element.Set_DocumentIndex(Index);
Element.Reset( X, YLimit, XLimit, YLimit, PageIndex ); Element.Reset(X, YLimit, XLimit, YLimit, PageIndex, 0, 1);
Element.Recalculate_Page( PageIndex ); Element.Recalculate_Page(0);
this.RecalcInfo.FlowObjectPage++; this.RecalcInfo.FlowObjectPage++;
RecalcResult = recalcresult_NextPage; RecalcResult = recalcresult_NextPage;
} }
else else
{ {
if ( ( 0 === Index && 0 === PageIndex ) || Index != StartIndex ) X = this.RecalcInfo.AdditionalInfo.X;
{ Y = this.RecalcInfo.AdditionalInfo.Y;
Element.Set_DocumentIndex( Index ); XLimit = this.RecalcInfo.AdditionalInfo.XLimit;
Element.Reset( X, Y, XLimit, YLimit, PageIndex ); YLimit = this.RecalcInfo.AdditionalInfo.YLimit;
}
// Пересчет нужнен для обновления номеров колонок и страниц
RecalcResult = Element.Recalculate_Page( PageIndex ); Element.Reset(X, Y, XLimit, YLimit, PageIndex, 0, 1);
if ( (( 0 === Index && 0 === PageIndex ) || Index != StartIndex) && true != Element.Is_ContentOnFirstPage() ) RecalcResult = Element.Recalculate_Page(0);
{ this.RecalcInfo.FlowObjectPage++;
if(this.DrawingObjects)
this.DrawingObjects.removeFloatTableById(PageIndex, Element.Get_Id());
this.RecalcInfo.FlowObjectPageBreakBefore = true;
RecalcResult = recalcresult_CurPage;
}
else
{
this.RecalcInfo.FlowObjectPage++;
if (RecalcResult & recalcresult_NextElement) if (RecalcResult & recalcresult_NextElement)
{ this.RecalcInfo.Reset();
this.RecalcInfo.FlowObject = null;
this.RecalcInfo.FlowObjectPageBreakBefore = false;
this.RecalcInfo.FlowObjectPage = 0;
this.RecalcInfo.RecalcResult = recalcresult_NextElement;
}
}
} }
} }
else else
{ {
RecalcResult = Element.Recalculate_Page( PageIndex ); RecalcResult = Element.Recalculate_Page(PageIndex - Element.PageNum);
this.RecalcInfo.FlowObjectPage++;
if(this.DrawingObjects) if(this.DrawingObjects)
this.DrawingObjects.addFloatTable(new CFlowTable(Element, PageIndex)); this.DrawingObjects.addFloatTable(new CFlowTable(Element, PageIndex));
if (RecalcResult & recalcresult_NextElement) if (RecalcResult & recalcresult_NextElement)
{ this.RecalcInfo.Reset();
this.RecalcInfo.FlowObject = null;
this.RecalcInfo.FlowObjectPageBreakBefore = false;
this.RecalcInfo.RecalcResult = recalcresult_NextElement;
}
} }
} }
else else
{ {
// Пропускаем
RecalcResult = recalcresult_NextElement; RecalcResult = recalcresult_NextElement;
} }
} }
......
...@@ -7790,6 +7790,7 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow ...@@ -7790,6 +7790,7 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow
return oThis.ReadDocTable(t, l, oNewTable); return oThis.ReadDocTable(t, l, oNewTable);
}); });
oNewTable.ReIndexing(0); oNewTable.ReIndexing(0);
oNewTable.Correct_BadTable();
if(2 == g_nCurFileVersion && false == oNewTable.Inline) if(2 == g_nCurFileVersion && false == oNewTable.Inline)
{ {
//делаем смещение левой границы //делаем смещение левой границы
...@@ -8249,6 +8250,7 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow ...@@ -8249,6 +8250,7 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow
return oThis.ReadDocTable(t, l, oNewTable); return oThis.ReadDocTable(t, l, oNewTable);
}); });
oNewTable.ReIndexing(0); oNewTable.ReIndexing(0);
oNewTable.Correct_BadTable();
if(2 == g_nCurFileVersion && false == oNewTable.Inline) if(2 == g_nCurFileVersion && false == oNewTable.Inline)
{ {
//делаем смещение левой границы //делаем смещение левой границы
......
...@@ -9504,8 +9504,6 @@ CTable.prototype = ...@@ -9504,8 +9504,6 @@ CTable.prototype =
// Удаляем лишние строки // Удаляем лишние строки
this.Internal_Check_TableRows(true); this.Internal_Check_TableRows(true);
//if ( true === this.Internal_Check_TableRows(true) )
//this.Content[Pos_tl.Row].Pr.Height = { Value : Summary_Height, HRule : heightrule_AtLeast };
var PageNum = 0; var PageNum = 0;
for ( PageNum = 0; PageNum < this.Pages.length - 1; PageNum++ ) for ( PageNum = 0; PageNum < this.Pages.length - 1; PageNum++ )
...@@ -12957,6 +12955,14 @@ CTable.prototype.private_StartTrackTable = function(CurPage) ...@@ -12957,6 +12955,14 @@ CTable.prototype.private_StartTrackTable = function(CurPage)
} }
this.DrawingDocument.StartTrackTable(NewOutline, Transform); this.DrawingDocument.StartTrackTable(NewOutline, Transform);
}; };
CTable.prototype.Correct_BadTable = function()
{
// TODO: Пока оставим эту заглушку на случай загрузки плохих таблиц. В будущем надо будет
// сделать нормальный обсчет для случая, когда у нас есть "пустые" строки (составленные
// из вертикально объединенных ячеек).
this.Internal_Check_TableRows(false);
};
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
// Класс CTableLook // Класс CTableLook
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
......
...@@ -15,11 +15,6 @@ CTable.prototype.Recalculate_Page = function(PageIndex) ...@@ -15,11 +15,6 @@ CTable.prototype.Recalculate_Page = function(PageIndex)
this.private_RecalculateGrid(); this.private_RecalculateGrid();
this.private_RecalculateBorders(); this.private_RecalculateBorders();
this.private_RecalculateHeader(); this.private_RecalculateHeader();
// TODO: Пока оставим эту заглушку на случай загрузки плохих таблиц. В будущем надо будет
// сделать нормальный обсчет для случая, когда у нас есть "пустые" строки (составленные
// из вертикально объединенных ячеек).
this.Internal_Check_TableRows(false);
} }
this.private_RecalculatePageXY(PageIndex); this.private_RecalculatePageXY(PageIndex);
...@@ -2121,6 +2116,9 @@ CTable.prototype.private_RecalculatePage = function(CurPage) ...@@ -2121,6 +2116,9 @@ CTable.prototype.private_RecalculatePage = function(CurPage)
CurGridCol += GridSpan; CurGridCol += GridSpan;
} }
if (undefined === this.TableRowsBottom[CurRow][CurPage])
this.TableRowsBottom[CurRow][CurPage] = Y;
var RowHValue = RowH.Value; var RowHValue = RowH.Value;
// В данном значении не учитываются маргины // В данном значении не учитываются маргины
RowHValue = RowH.Value + this.MaxBotMargin[CurRow] + MaxTopMargin; RowHValue = RowH.Value + this.MaxBotMargin[CurRow] + MaxTopMargin;
......
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