summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-04-28 12:13:22 +0100
committerCaolán McNamara <caolanm@redhat.com>2021-04-28 17:14:02 +0200
commit041a22ec9e7789f93a8dacbc7e7f0b1fb630e6fb (patch)
tree256b3ec8114d2efaf35149e7dbf7e0b6a958c489 /svx
parent9e5b04d1e8c49d5f95173b5074368b1aa24a1e64 (diff)
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@redhat.com>
Diffstat (limited to 'svx')
-rw-r--r--svx/source/dialog/weldeditview.cxx36
1 files changed, 31 insertions, 5 deletions
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();
}