[Libreoffice-commits] core.git: svx/source
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Wed Apr 28 15:14:41 UTC 2021
svx/source/dialog/weldeditview.cxx | 36 +++++++++++++++++++++++++++++++-----
1 file changed, 31 insertions(+), 5 deletions(-)
New commits:
commit 041a22ec9e7789f93a8dacbc7e7f0b1fb630e6fb
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Apr 28 12:13:22 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Wed Apr 28 17:14:02 2021 +0200
replace old-school RasterOp::Invert selection in weldeditview
with the prettier semi-transparent selection used elsewhere
affects e.g. math command window, writer comments, calc input bar, calc
Headers/Footers dialog.
Change-Id: I35f8211f6e86c4278db84a6b6aa5306d5b1df468
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114804
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/svx/source/dialog/weldeditview.cxx b/svx/source/dialog/weldeditview.cxx
index ebd608ff3624..38d69111c7a0 100644
--- a/svx/source/dialog/weldeditview.cxx
+++ b/svx/source/dialog/weldeditview.cxx
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <basegfx/matrix/b2dhommatrix.hxx>
#include <com/sun/star/accessibility/AccessibleRole.hpp>
#include <com/sun/star/accessibility/AccessibleStateType.hpp>
#include <com/sun/star/accessibility/XAccessible.hpp>
@@ -26,6 +27,8 @@
#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <cppuhelper/supportsservice.hxx>
+#include <drawinglayer/processor2d/baseprocessor2d.hxx>
+#include <drawinglayer/processor2d/processor2dtools.hxx>
#include <editeng/eeitem.hxx>
#include <editeng/fhgtitem.hxx>
#include <editeng/fontitem.hxx>
@@ -36,10 +39,13 @@
#include <osl/diagnose.h>
#include <svl/itemset.hxx>
#include <sal/log.hxx>
+#include <svx/sdr/overlay/overlayselection.hxx>
+#include <svtools/optionsdrawinglayer.hxx>
#include <svx/AccessibleTextHelper.hxx>
#include <svx/weldeditview.hxx>
#include <tools/diagnose_ex.h>
#include <unotools/accessiblestatesethelper.hxx>
+#include <vcl/canvastools.hxx>
#include <vcl/cursor.hxx>
#include <vcl/event.hxx>
#include <vcl/ptrstyle.hxx>
@@ -170,12 +176,32 @@ void WeldEditView::DoPaint(vcl::RenderContext& rRenderContext, const tools::Rect
pEditView->GetSelectionRectangles(aLogicRects);
}
- rRenderContext.SetLineColor();
- rRenderContext.SetFillColor(COL_BLACK);
- rRenderContext.SetRasterOp(RasterOp::Invert);
+ if (!aLogicRects.empty())
+ {
+ std::vector<basegfx::B2DRange> aLogicRanges;
+ aLogicRanges.reserve(aLogicRects.size());
+
+ for (const auto& aRect : aLogicRects)
+ aLogicRanges.emplace_back(vcl::unotools::b2DRectangleFromRectangle(aRect));
+
+ // get the system's highlight color
+ const SvtOptionsDrawinglayer aSvtOptionsDrawinglayer;
+ const Color aHighlight(aSvtOptionsDrawinglayer.getHilightColor());
+
+ auto xCursorOverlay = std::make_unique<sdr::overlay::OverlaySelection>(
+ sdr::overlay::OverlayType::Transparent, aHighlight, aLogicRanges, true);
- for (const auto& rSelectionRect : aLogicRects)
- rRenderContext.DrawRect(rSelectionRect);
+ const drawinglayer::geometry::ViewInformation2D aViewInformation2D(
+ basegfx::B2DHomMatrix(), rRenderContext.GetViewTransformation(),
+ vcl::unotools::b2DRectangleFromRectangle(rRect), nullptr, 0.0,
+ css::uno::Sequence<css::beans::PropertyValue>());
+
+ std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> xProcessor(
+ drawinglayer::processor2d::createProcessor2DFromOutputDevice(rRenderContext,
+ aViewInformation2D));
+
+ xProcessor->process(xCursorOverlay->getOverlayObjectPrimitive2DSequence());
+ }
rRenderContext.Pop();
}
More information about the Libreoffice-commits
mailing list