diff --git a/0001-Improve-resizing-chevrons-so-the-control-point-is-a-.patch b/0001-Improve-resizing-chevrons-so-the-control-point-is-a-.patch new file mode 100644 index 0000000..99969db --- /dev/null +++ b/0001-Improve-resizing-chevrons-so-the-control-point-is-a-.patch @@ -0,0 +1,92 @@ +From 7126bc7730242e80a04d704256d2cf7a244b3cf0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Mon, 25 Sep 2017 14:45:51 +0100 +Subject: [PATCH] Improve resizing chevrons so the control point is a fixed + distance from end + +during resizing, because... + +"If I want to use LibreOffice Draw to illustrate process steps with chevrons +(which I do a lot, working on for example customer project roadmaps), I always +get stuck if the steps I want to illustrate are not equal lengths, because the +sizes/angles of the chevron "arrow heads" are proportional to the length of the +chevron, rather than being fixed, and thus don't "fit" together. Which makes +for an incredibly ugly diagram." + +Change-Id: Ib8b5e0ea7db5383cae754127023f7ab12d748537 +--- + include/svx/svdoashp.hxx | 3 ++- + svx/source/svdraw/svdoashp.cxx | 17 ++++++++++++++++- + 2 files changed, 18 insertions(+), 2 deletions(-) + +diff --git a/include/svx/svdoashp.hxx b/include/svx/svdoashp.hxx +index ea222ed..85f5e9d 100644 +--- a/include/svx/svdoashp.hxx ++++ b/include/svx/svdoashp.hxx +@@ -57,11 +57,12 @@ enum class CustomShapeHandleModes + RESIZE_ABSOLUTE_Y = 8, + MOVE_SHAPE = 16, + ORTHO4 = 32, ++ RESIZE_ABSOLUTE_NEGX = 64 + }; + + namespace o3tl + { +- template<> struct typed_flags : is_typed_flags {}; ++ template<> struct typed_flags : is_typed_flags {}; + } + + struct SdrCustomShapeInteraction +diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx +index 5323375..4f01a19 100644 +--- a/svx/source/svdraw/svdoashp.cxx ++++ b/svx/source/svdraw/svdoashp.cxx +@@ -617,6 +617,11 @@ std::vector< SdrCustomShapeInteraction > SdrObjCustomShape::GetInteractionHandle + } + break; + ++ case mso_sptChevron : ++ case mso_sptHomePlate : ++ nMode |= CustomShapeHandleModes::RESIZE_ABSOLUTE_NEGX; ++ break; ++ + case mso_sptWedgeRectCallout : + case mso_sptWedgeRRectCallout : + case mso_sptCloudCallout : +@@ -1523,6 +1528,11 @@ void SdrObjCustomShape::NbcResize( const Point& rRef, const Fraction& rxFact, co + sal_Int32 nX = ( aIter->aPosition.X - aOld.Left() ) + maRect.Left(); + aIter->xInteraction->setControllerPosition( css::awt::Point( nX, aIter->xInteraction->getPosition().Y ) ); + } ++ else if ( aIter->nMode & CustomShapeHandleModes::RESIZE_ABSOLUTE_NEGX ) ++ { ++ sal_Int32 nX = maRect.Right() - (aOld.Right() - aIter->aPosition.X); ++ aIter->xInteraction->setControllerPosition( css::awt::Point( nX, aIter->xInteraction->getPosition().Y ) ); ++ } + if ( aIter->nMode & CustomShapeHandleModes::RESIZE_ABSOLUTE_Y ) + { + sal_Int32 nY = ( aIter->aPosition.Y - aOld.Top() ) + maRect.Top(); +@@ -1535,6 +1545,7 @@ void SdrObjCustomShape::NbcResize( const Point& rRef, const Fraction& rxFact, co + } + InvalidateRenderGeometry(); + } ++ + void SdrObjCustomShape::NbcRotate( const Point& rRef, long nAngle, double sn, double cs ) + { + bool bMirroredX = IsMirroredX(); +@@ -1933,8 +1944,12 @@ void SdrObjCustomShape::DragResizeCustomShape( const tools::Rectangle& rNewRect + { + if ( aIter->nMode & CustomShapeHandleModes::RESIZE_FIXED ) + aIter->xInteraction->setControllerPosition( aIter->aPosition ); +- if ( aIter->nMode & CustomShapeHandleModes::RESIZE_ABSOLUTE_X ) ++ if ( aIter->nMode & CustomShapeHandleModes::RESIZE_ABSOLUTE_X || ++ aIter->nMode & CustomShapeHandleModes::RESIZE_ABSOLUTE_NEGX ) + { ++ if (aIter->nMode & CustomShapeHandleModes::RESIZE_ABSOLUTE_NEGX) ++ bOldMirroredX = !bOldMirroredX; ++ + sal_Int32 nX; + if ( bOldMirroredX ) + { +-- +2.9.5 + diff --git a/libreoffice.spec b/libreoffice.spec index d66ddb4..702f23b 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -247,6 +247,7 @@ Patch2: 0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch Patch3: 0001-rename-IsAutoCapitalizeWordDelim-to-NonFieldWordDeli.patch Patch4: 0002-consider-field-marks-as-text-for-auto-quotes.patch Patch5: 0001-gtk3-only-for-3.20.patch +Patch6: 0001-Improve-resizing-chevrons-so-the-control-point-is-a-.patch %if 0%{?rhel} # not upstreamed