[Libreoffice-commits] core.git: sw/source
László Németh
laszlo.nemeth at collabora.com
Wed May 13 09:14:01 PDT 2015
sw/source/core/doc/textboxhelper.cxx | 8 ++++
sw/source/core/objectpositioning/anchoredobjectposition.cxx | 24 +++++++++++-
2 files changed, 31 insertions(+), 1 deletion(-)
New commits:
commit a4dee94afed9ade6ac50237c8d99a6e49d3bebc1
Author: László Németh <laszlo.nemeth at collabora.com>
Date: Wed May 13 17:47:36 2015 +0200
tdf#91260: allow textboxes extending beyond the page bottom
This commit fixes layout problems of DOCX import, but also
now it's possible to move a textbox beyond the page bottom
using the arrow keys (this worked only for page-anchored
shapes in Writer).
Change-Id: Ie83d3202a2248d948348656aa26df20982f9675b
diff --git a/sw/source/core/doc/textboxhelper.cxx b/sw/source/core/doc/textboxhelper.cxx
index eb9ed84..f09e2e9 100644
--- a/sw/source/core/doc/textboxhelper.cxx
+++ b/sw/source/core/doc/textboxhelper.cxx
@@ -636,6 +636,14 @@ void SwTextBoxHelper::syncFlyFrmAttr(SwFrmFmt& rShape, SfxItemSet& rSet)
aOrient.SetPos(aOrient.GetPos() + aRect.getY());
aTextBoxSet.Put(aOrient);
+
+ // restore height (shrinked for extending beyond the page bottom - tdf#91260)
+ SwFmtFrmSize aSize(pFmt->GetFrmSize());
+ if (!aRect.IsEmpty())
+ {
+ aSize.SetHeight(aRect.getHeight());
+ aTextBoxSet.Put(aSize);
+ }
}
break;
case RES_HORI_ORIENT:
diff --git a/sw/source/core/objectpositioning/anchoredobjectposition.cxx b/sw/source/core/objectpositioning/anchoredobjectposition.cxx
index c7b916a..54bf5e0 100644
--- a/sw/source/core/objectpositioning/anchoredobjectposition.cxx
+++ b/sw/source/core/objectpositioning/anchoredobjectposition.cxx
@@ -19,6 +19,7 @@
#include <anchoredobjectposition.hxx>
#include <environmentofanchoredobject.hxx>
+#include <doc.hxx>
#include <flyfrm.hxx>
#include <flyfrms.hxx>
#include <txtfrm.hxx>
@@ -29,6 +30,7 @@
#include <dcontact.hxx>
#include <frmfmt.hxx>
#include <fmtornt.hxx>
+#include <fmtfsize.hxx>
#include <fmtfollowtextflow.hxx>
#include <editeng/lrspitem.hxx>
#include <editeng/ulspitem.hxx>
@@ -471,8 +473,28 @@ SwTwips SwAnchoredObjectPosition::_ImplAdjustVertRelPos( const SwTwips nTopOfAnc
{
nAdjustedRelPosY = aPgAlignArea.Top() - nTopOfAnch;
}
- }
+ // tdf#91260 - allow textboxes extending beyond the page bottom
+ if ( nAdjustedRelPosY < nProposedRelPosY )
+ {
+ const SwFrmFmt* pFmt = &(GetFrmFmt());
+ if ( SwTextBoxHelper::isTextBox(&GetObject()) )
+ {
+ // shrink textboxes to extend beyond the page bottom
+ SwFrmFmt* pFrmFmt = ::FindFrmFmt(&GetObject());
+ SfxItemSet aTextBoxSet(pFrmFmt->GetDoc()->GetAttrPool(), aFrmFmtSetRange);
+ SwFmtFrmSize aSize(pFmt->GetFrmSize());
+ SwTwips nShrinked = aSize.GetHeight() - (nProposedRelPosY - nAdjustedRelPosY);
+ aSize.SetHeight( nShrinked > 0 ? nShrinked : 0 );
+ aTextBoxSet.Put(aSize);
+ if (aTextBoxSet.Count())
+ pFrmFmt->GetDoc()->SetFlyFrmAttr(*pFrmFmt, aTextBoxSet);
+ nAdjustedRelPosY = nProposedRelPosY;
+ } else if ( SwTextBoxHelper::findTextBox(pFmt) )
+ // when the shape has a textbox, use only the proposed vertical position
+ nAdjustedRelPosY = nProposedRelPosY;
+ }
+ }
return nAdjustedRelPosY;
}
More information about the Libreoffice-commits
mailing list