Commit 0d087526 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@67911 954022d7-b5bf-4e40-9824-e11837661b57
parent a5bb023e
...@@ -1963,6 +1963,31 @@ CDocument.prototype = ...@@ -1963,6 +1963,31 @@ CDocument.prototype =
{ {
bFlow = true; bFlow = true;
// Проверяем PageBreak и ColumnBreak в предыдущей строке
var isPageBreakOnPrevLine = false;
var isColumnBreakOnPrevLine = false;
var PrevElement = Element.Get_DocumentPrev();
if (null !== PrevElement && type_Paragraph === PrevElement.Get_Type() && Index !== StartIndex)
{
var EndLine = PrevElement.Pages[PrevElement.Pages.length - 1].EndLine;
if (-1 !== EndLine && PrevElement.Lines[EndLine].Info & paralineinfo_BreakRealPage)
isPageBreakOnPrevLine = true;
if (-1 !== EndLine && !(PrevElement.Lines[EndLine].Info & paralineinfo_BreakRealPage) && PrevElement.Lines[EndLine].Info & paralineinfo_BreakPage)
isColumnBreakOnPrevLine = true;
}
if (true === isColumnBreakOnPrevLine)
{
RecalcResult = recalcresult_NextPage | recalcresultflags_LastFromNewColumn;
}
else if (true === isPageBreakOnPrevLine)
{
RecalcResult = recalcresult_NextPage | recalcresultflags_LastFromNewPage;
}
else
{
var RecalcInfo = var RecalcInfo =
{ {
Element : Element, Element : Element,
...@@ -1988,6 +2013,7 @@ CDocument.prototype = ...@@ -1988,6 +2013,7 @@ CDocument.prototype =
Index = RecalcInfo.Index; Index = RecalcInfo.Index;
RecalcResult = RecalcInfo.RecalcResult; RecalcResult = RecalcInfo.RecalcResult;
} }
}
else else
{ {
if ((0 === Index && 0 === PageIndex && 0 === ColumnIndex) || Index != StartIndex || (Index === StartIndex && true === bResetStartElement)) if ((0 === Index && 0 === PageIndex && 0 === ColumnIndex) || Index != StartIndex || (Index === StartIndex && true === bResetStartElement))
......
...@@ -739,7 +739,7 @@ Paragraph.prototype.private_RecalculatePageBreak = function(CurLine, CurPa ...@@ -739,7 +739,7 @@ Paragraph.prototype.private_RecalculatePageBreak = function(CurLine, CurPa
PRS.RecalcResult = recalcresult_NextPage; PRS.RecalcResult = recalcresult_NextPage;
return false; return false;
} }
else else if (true === this.Is_Inline()) // Случай Flow разбирается в Document.js
{ {
// Проверяем PageBreak и ColumnBreak в предыдущей строке // Проверяем PageBreak и ColumnBreak в предыдущей строке
var isPageBreakOnPrevLine = false; var isPageBreakOnPrevLine = false;
...@@ -782,16 +782,16 @@ Paragraph.prototype.private_RecalculatePageBreak = function(CurLine, CurPa ...@@ -782,16 +782,16 @@ Paragraph.prototype.private_RecalculatePageBreak = function(CurLine, CurPa
} }
} }
// Эта проверка на случай, если предыдущий параграф закончился PageBreak //// Эта проверка на случай, если предыдущий параграф закончился PageBreak
if (PRS.YStart > PRS.YLimit - 0.001 && (CurLine != this.Pages[CurPage].FirstLine || (0 === CurPage && (null != this.Get_DocumentPrev() || true === this.Parent.Is_TableCellContent()))) && true === this.Use_YLimit()) //if (PRS.YStart > PRS.YLimit - 0.001 && (CurLine != this.Pages[CurPage].FirstLine || (0 === CurPage && (null != this.Get_DocumentPrev() || true === this.Parent.Is_TableCellContent()))) && true === this.Use_YLimit())
{ //{
this.Pages[CurPage].Set_EndLine(CurLine - 1); // this.Pages[CurPage].Set_EndLine(CurLine - 1);
if ( 0 === CurLine ) // if ( 0 === CurLine )
this.Lines[-1] = new CParaLine( 0 ); // this.Lines[-1] = new CParaLine( 0 );
//
PRS.RecalcResult = recalcresult_NextPage; // PRS.RecalcResult = recalcresult_NextPage;
return false; // return false;
} //}
return true; return true;
}; };
......
...@@ -134,6 +134,9 @@ CTable.prototype.Start_FromNewPage = function() ...@@ -134,6 +134,9 @@ CTable.prototype.Start_FromNewPage = function()
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
CTable.prototype.private_RecalculateCheckPageColumnBreak = function(CurPage) CTable.prototype.private_RecalculateCheckPageColumnBreak = function(CurPage)
{ {
if (true !== this.Is_Inline()) // Случай Flow разбирается в Document.js
return true;
var isPageBreakOnPrevLine = false; var isPageBreakOnPrevLine = false;
var isColumnBreakOnPrevLine = false; var isColumnBreakOnPrevLine = false;
......
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