Commit 2fe5b5e8 authored by Ilya Kirillov's avatar Ilya Kirillov

Bug #32097 Исправлен баг с позиционированием автофигур в колонтитуле, у...

Bug #32097 Исправлен баг с позиционированием автофигур в колонтитуле, у которых расположение зависит от границ колонтитула.
parent 759a3d22
...@@ -1494,12 +1494,31 @@ CHeaderFooterController.prototype = ...@@ -1494,12 +1494,31 @@ CHeaderFooterController.prototype =
FooterDrawings = Footer.Content.Get_AllDrawingObjects([]); FooterDrawings = Footer.Content.Get_AllDrawingObjects([]);
FooterTables = Footer.Content.Get_AllFloatElements(); FooterTables = Footer.Content.Get_AllFloatElements();
} }
// Подправляем позиции автофигур с учетом возможно изменившихся границ колонтитулов. Делаем это для всех автофигур,
// потому что колонтитулы рассчитываются первыми на странице и внутри них нет обтекания.
var PageLimits = this.LogicDocument.Get_PageContentStartPos(PageIndex);
this.private_UpdateDrawingVerticalPositions(HeaderDrawings, PageLimits.Y, PageLimits.YLimit);
this.private_UpdateDrawingVerticalPositions(FooterDrawings, PageLimits.Y, PageLimits.YLimit);
this.LogicDocument.DrawingObjects.mergeDrawings(PageIndex, HeaderDrawings, HeaderTables, FooterDrawings, FooterTables); this.LogicDocument.DrawingObjects.mergeDrawings(PageIndex, HeaderDrawings, HeaderTables, FooterDrawings, FooterTables);
if ( true === bRecalcHeader || true === bRecalcFooter ) if ( true === bRecalcHeader || true === bRecalcFooter )
return true; return true;
return false; return false;
}, },
private_UpdateDrawingVerticalPositions : function(Drawings, HeaderY, FooterY)
{
if (Drawings)
{
for (var Index = 0, Count = Drawings.length; Index < Count; ++Index)
{
var Drawing = Drawings[Index];
Drawing.Update_PositionYHeaderFooter(HeaderY, FooterY);
}
}
},
// Отрисовка колонтитулов на данной странице // Отрисовка колонтитулов на данной странице
Draw : function(nPageIndex, pGraphics) Draw : function(nPageIndex, pGraphics)
......
...@@ -3816,6 +3816,15 @@ CAnchorPosition.prototype = ...@@ -3816,6 +3816,15 @@ CAnchorPosition.prototype =
return this.CalcY; return this.CalcY;
}, },
Update_PositionYHeaderFooter : function(TopMarginY, BottomMarginY)
{
var TopY = Math.max(this.Page_Y, Math.min(TopMarginY, this.Page_H));
var BottomY = Math.max(this.Page_Y, Math.min(BottomMarginY, this.Page_H));
this.Top_Margin = TopY;
this.Bottom_Margin = this.Page_H - BottomY;
},
Correct_Values : function(bInline, PageLimits, AllowOverlap, UseTextWrap, OtherFlowObjects) Correct_Values : function(bInline, PageLimits, AllowOverlap, UseTextWrap, OtherFlowObjects)
{ {
if ( true != bInline ) if ( true != bInline )
...@@ -4883,6 +4892,14 @@ ParaDrawing.prototype = ...@@ -4883,6 +4892,14 @@ ParaDrawing.prototype =
this.useWrap = this.Use_TextWrap(); this.useWrap = this.Use_TextWrap();
}, },
Update_PositionYHeaderFooter : function(TopMarginY, BottomMarginY)
{
this.Internal_Position.Update_PositionYHeaderFooter(TopMarginY, BottomMarginY);
this.Internal_Position.Calculate_Y(this.Is_Inline(), this.PositionV.RelativeFrom, this.PositionV.Align, this.PositionV.Value, this.PositionV.Percent);
this.Y = this.Internal_Position.CalcY;
this.updatePosition3(this.PageNum, this.X, this.Y, this.PageNum);
},
Reset_SavedPosition : function() Reset_SavedPosition : function()
{ {
this.PositionV_Old = undefined; this.PositionV_Old = undefined;
......
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