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

Исправлен баг с рассчетом расстояния до и после параграфа в таблицах (баг 22204).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@56185 954022d7-b5bf-4e40-9824-e11837661b57
parent 3e6b0c86
...@@ -3041,7 +3041,7 @@ Paragraph.prototype = ...@@ -3041,7 +3041,7 @@ Paragraph.prototype =
// тогда мы должны пересчитать предыдущую страницу, с учетом того, что предыдущий параграф // тогда мы должны пересчитать предыдущую страницу, с учетом того, что предыдущий параграф
// надо начать с новой страницы. // надо начать с новой страницы.
var Curr = this.Get_DocumentPrev(); var Curr = this.Get_DocumentPrev();
while ( null != Curr && type_Paragraph === Curr.GetType() ) while ( null != Curr && type_Paragraph === Curr.GetType() && undefined === Curr.Get_SectionPr() )
{ {
var CurrKeepNext = Curr.Get_CompiledPr2(false).ParaPr.KeepNext; var CurrKeepNext = Curr.Get_CompiledPr2(false).ParaPr.KeepNext;
if ( (true === CurrKeepNext && Curr.Pages.length > 1) || false === CurrKeepNext || true !== Curr.Is_Inline() ) if ( (true === CurrKeepNext && Curr.Pages.length > 1) || false === CurrKeepNext || true !== Curr.Is_Inline() )
...@@ -3051,7 +3051,7 @@ Paragraph.prototype = ...@@ -3051,7 +3051,7 @@ Paragraph.prototype =
else else
{ {
var Prev = Curr.Get_DocumentPrev(); var Prev = Curr.Get_DocumentPrev();
if ( null === Prev || type_Paragraph != Prev.GetType() ) if ( null === Prev || type_Paragraph != Prev.GetType() || undefined !== Prev.Get_SectionPr() )
break; break;
var PrevKeepNext = Prev.Get_CompiledPr2(false).ParaPr.KeepNext; var PrevKeepNext = Prev.Get_CompiledPr2(false).ParaPr.KeepNext;
...@@ -14418,7 +14418,17 @@ Paragraph.prototype = ...@@ -14418,7 +14418,17 @@ Paragraph.prototype =
} }
else if ( null === PrevEl ) else if ( null === PrevEl )
{ {
if ( true === Pr.ParaPr.Spacing.BeforeAutoSpacing ) if ( true === this.Parent.Is_TableCellContent() && true === Pr.ParaPr.ContextualSpacing )
{
var Cell = this.Parent.Parent;
var PrevEl = Cell.Get_LastParagraphPrevCell();
if ( (null !== PrevEl && type_Paragraph === PrevEl.GetType() && PrevEl.Style_Get() === StyleId) || (null === PrevEl && undefined === StyleId) )
{
Pr.ParaPr.Spacing.Before = 0;
}
}
else if ( true === Pr.ParaPr.Spacing.BeforeAutoSpacing )
{ {
Pr.ParaPr.Spacing.Before = 0; Pr.ParaPr.Spacing.Before = 0;
} }
...@@ -14488,6 +14498,17 @@ Paragraph.prototype = ...@@ -14488,6 +14498,17 @@ Paragraph.prototype =
} }
else else
{ {
if ( true === this.Parent.Is_TableCellContent() && true === Pr.ParaPr.ContextualSpacing )
{
var Cell = this.Parent.Parent;
var NextEl = Cell.Get_FirstParagraphNextCell();
if ( (null !== NextEl && type_Paragraph === NextEl.GetType() && NextEl.Style_Get() === StyleId) || (null === NextEl && StyleId === undefined) )
{
Pr.ParaPr.Spacing.After = 0;
}
}
else
Pr.ParaPr.Spacing.After = this.Internal_CalculateAutoSpacing( Pr.ParaPr.Spacing.After, Pr.ParaPr.Spacing.AfterAutoSpacing, this ); Pr.ParaPr.Spacing.After = this.Internal_CalculateAutoSpacing( Pr.ParaPr.Spacing.After, Pr.ParaPr.Spacing.AfterAutoSpacing, this );
} }
......
...@@ -2364,6 +2364,9 @@ ParaEnd.prototype = ...@@ -2364,6 +2364,9 @@ ParaEnd.prototype =
{ {
if ( null !== this.SectionPr ) if ( null !== this.SectionPr )
{ {
Context.b_color1( 0, 0, 0, 255);
Context.p_color( 0, 0, 0, 255);
Context.SetFont( {FontFamily: { Name : "Courier New", Index : -1 }, FontSize: 8, Italic: false, Bold : false} ); Context.SetFont( {FontFamily: { Name : "Courier New", Index : -1 }, FontSize: 8, Italic: false, Bold : false} );
var Widths = this.SectionPr.Widths; var Widths = this.SectionPr.Widths;
var strSectionBreak = this.SectionPr.Str; var strSectionBreak = this.SectionPr.Str;
......
...@@ -20614,6 +20614,57 @@ CTableCell.prototype = ...@@ -20614,6 +20614,57 @@ CTableCell.prototype =
else else
return CurTable.Parent.Check_TableCoincidence(Table); return CurTable.Parent.Check_TableCoincidence(Table);
}, },
Get_LastParagraphPrevCell : function()
{
if ( undefined === this.Row || null === this.Row )
return null;
var CellIndex = this.Index;
var Row = this.Row;
// TODO: Разобраться, что делать в данном случае
if ( 0 === CellIndex )
{
if ( 0 === this.Row.Index && undefined !== this.Row.Table && null !== this.Row.Table )
{
var Prev = this.Row.Table.Get_DocumentPrev();
if ( type_Paragraph === Prev.GetType() )
return Prev;
}
return null;
}
var PrevCell = Row.Get_Cell( CellIndex );
var Count = PrevCell.Content.Content.length;
if ( Count <= 0 )
return null;
var Element = PrevCell.Content.Content[Count - 1];
if ( type_Paragraph !== Element.GetType() )
return null;
return Element;
},
Get_FirstParagraphNextCell : function()
{
if ( undefined === this.Row || null === this.Row )
return null;
var CellIndex = this.Index;
var Row = this.Row;
// TODO: Разобраться, что делать в данном случае
if ( CellIndex >= this.Row.Get_CellsCount() - 1 )
return null;
var NextCell = Row.Get_Cell( CellIndex );
return NextCell.Content.Get_FirstParagraph();
},
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// Функции для работы с номерами страниц // Функции для работы с номерами страниц
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
......
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