[Libreoffice-commits] core.git: svx/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Sat Nov 10 11:56:47 UTC 2018
svx/source/svdraw/svdorect.cxx | 52 ++++++++++++++++++-----------------------
1 file changed, 24 insertions(+), 28 deletions(-)
New commits:
commit 87fb1507750269d43d518de895931fb4483a84ae
Author: Regina Henschel <rb.henschel at t-online.de>
AuthorDate: Thu Nov 8 10:17:55 2018 +0100
Commit: Regina Henschel <rb.henschel at t-online.de>
CommitDate: Sat Nov 10 12:56:27 2018 +0100
tdf#121258 Use correct kind of handles for legacy rectangle
Text box and rectangle have the same kind and number of handles in
'Edit Point' mode. Only that a text box has an additional handle for
its blinking frame. The error was, that this special one was not
skipped for a rectangle.
Change-Id: Iae7af3eb196e61e32ecd5a39ba0ec553bbdaaa48
Reviewed-on: https://gerrit.libreoffice.org/63070
Tested-by: Jenkins
Reviewed-by: Regina Henschel <rb.henschel at t-online.de>
diff --git a/svx/source/svdraw/svdorect.cxx b/svx/source/svdraw/svdorect.cxx
index e182c7e64960..d9b74ea3aaa9 100644
--- a/svx/source/svdraw/svdorect.cxx
+++ b/svx/source/svdraw/svdorect.cxx
@@ -312,26 +312,26 @@ sal_uInt32 SdrRectObj::GetHdlCount() const
void SdrRectObj::AddToHdlList(SdrHdlList& rHdlList) const
{
- sal_Int32 nCount = IsTextFrame() ? 10 : 9;
- for(sal_Int32 nHdlNum = 0; nHdlNum < nCount; ++nHdlNum)
+ // A text box has an additional (pseudo-)handle for the blinking frame.
+ if(IsTextFrame())
+ {
+ OSL_ENSURE(!IsTextEditActive(), "Do not use a ImpTextframeHdl for highlighting text in active text edit, this will collide with EditEngine paints (!)");
+ // hack for calc grid sync to ensure the hatched area
+ // for a textbox is displayed at correct position
+ std::unique_ptr<SdrHdl> pH(new ImpTextframeHdl(maRect + GetGridOffset()));
+ pH->SetObj(const_cast<SdrRectObj*>(this));
+ pH->SetRotationAngle(aGeo.nRotationAngle);
+ rHdlList.AddHdl(std::move(pH));
+ }
+
+ for(sal_Int32 nHdlNum = 1; nHdlNum <= 9; ++nHdlNum)
{
- std::unique_ptr<SdrHdl> pH;
Point aPnt;
SdrHdlKind eKind = SdrHdlKind::Move;
switch(nHdlNum)
{
- case 0:
- {
- OSL_ENSURE(!IsTextEditActive(), "Do not use a ImpTextframeHdl for highlighting text in active text edit, this will collide with EditEngine paints (!)");
- // hack for calc grid sync to ensure the hatched area
- // for a textbox is displayed at correct position
- pH.reset(new ImpTextframeHdl(maRect + GetGridOffset() ));
- pH->SetObj(const_cast<SdrRectObj*>(this));
- pH->SetRotationAngle(aGeo.nRotationAngle);
- break;
- }
- case 1:
+ case 1: // Handle for changing the corner radius
{
long a = GetEckenradius();
long b = std::max(maRect.GetWidth(),maRect.GetHeight())/2; // rounded up, because GetWidth() adds 1
@@ -352,22 +352,18 @@ void SdrRectObj::AddToHdlList(SdrHdlList& rHdlList) const
case 9: aPnt=maRect.BottomRight(); eKind = SdrHdlKind::LowerRight; break;
}
- if(!pH)
+ if(aGeo.nShearAngle)
{
- if(aGeo.nShearAngle)
- {
- ShearPoint(aPnt,maRect.TopLeft(),aGeo.nTan);
- }
-
- if(aGeo.nRotationAngle)
- {
- RotatePoint(aPnt,maRect.TopLeft(),aGeo.nSin,aGeo.nCos);
- }
-
- pH.reset(new SdrHdl(aPnt,eKind));
- pH->SetObj(const_cast<SdrRectObj*>(this));
- pH->SetRotationAngle(aGeo.nRotationAngle);
+ ShearPoint(aPnt,maRect.TopLeft(),aGeo.nTan);
}
+ if(aGeo.nRotationAngle)
+ {
+ RotatePoint(aPnt,maRect.TopLeft(),aGeo.nSin,aGeo.nCos);
+ }
+
+ std::unique_ptr<SdrHdl> pH(new SdrHdl(aPnt,eKind));
+ pH->SetObj(const_cast<SdrRectObj*>(this));
+ pH->SetRotationAngle(aGeo.nRotationAngle);
rHdlList.AddHdl(std::move(pH));
}
}
More information about the Libreoffice-commits
mailing list