diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-04-06 11:19:27 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2021-04-06 17:32:00 +0200 |
commit | 3734437acf96c888a8d6ddc8be1d022be3ab9a59 (patch) | |
tree | 40b80539604d6526b854507fc0f5cec4efa59a78 /editeng | |
parent | 804694846cbe4153d559bcb7faf3b59967b55e71 (diff) |
use GetOutputDevice for ImpEditView::GetBackgroundColor
in case the host is using getEditViewCallbacks
Change-Id: Iadc146a585c3fc3df6f77ab8def2d697da5186a5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113671
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'editeng')
-rw-r--r-- | editeng/source/editeng/editdbg.cxx | 1 | ||||
-rw-r--r-- | editeng/source/editeng/editeng.cxx | 3 | ||||
-rw-r--r-- | editeng/source/editeng/impedit.cxx | 64 | ||||
-rw-r--r-- | editeng/source/editeng/impedit.hxx | 5 | ||||
-rw-r--r-- | editeng/source/editeng/impedit3.cxx | 16 | ||||
-rw-r--r-- | editeng/source/editeng/impedit4.cxx | 1 |
6 files changed, 47 insertions, 43 deletions
diff --git a/editeng/source/editeng/editdbg.cxx b/editeng/source/editeng/editdbg.cxx index 639e936a9558..c54d01aa2fa4 100644 --- a/editeng/source/editeng/editdbg.cxx +++ b/editeng/source/editeng/editdbg.cxx @@ -21,6 +21,7 @@ #include <memory> #include <vcl/svapp.hxx> #include <vcl/weld.hxx> +#include <vcl/window.hxx> #include <editeng/lspcitem.hxx> #include <editeng/lrspitem.hxx> diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index 3c06cbf96f51..3f11d39b300b 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -22,8 +22,9 @@ #include <comphelper/lok.hxx> #include <config_global.h> -#include <vcl/weld.hxx> #include <vcl/svapp.hxx> +#include <vcl/weld.hxx> +#include <vcl/window.hxx> #include <tools/stream.hxx> diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx index a42223732294..3c60298cea82 100644 --- a/editeng/source/editeng/impedit.cxx +++ b/editeng/source/editeng/impedit.cxx @@ -36,6 +36,7 @@ #include <vcl/transfer.hxx> #include <vcl/svapp.hxx> #include <vcl/weldutils.hxx> +#include <vcl/window.hxx> #include <sot/exchange.hxx> #include <sot/formats.hxx> #include <LibreOfficeKit/LibreOfficeKitEnums.h> @@ -50,16 +51,16 @@ using namespace ::com::sun::star::linguistic2; #define SCRLRANGE 20 // Scroll 1/20 of the width/height, when in QueryDrop -static void lcl_AllignToPixel( Point& rPoint, OutputDevice const * pOutDev, short nDiffX, short nDiffY ) +static void lcl_AllignToPixel( Point& rPoint, const OutputDevice& rOutDev, short nDiffX, short nDiffY ) { - rPoint = pOutDev->LogicToPixel( rPoint ); + rPoint = rOutDev.LogicToPixel( rPoint ); if ( nDiffX ) rPoint.AdjustX(nDiffX ); if ( nDiffY ) rPoint.AdjustY(nDiffY ); - rPoint = pOutDev->PixelToLogic( rPoint ); + rPoint = rOutDev.PixelToLogic( rPoint ); } LOKSpecialPositioning::LOKSpecialPositioning(const ImpEditView& rImpEditView, MapUnit eUnit, @@ -218,6 +219,11 @@ void ImpEditView::SetBackgroundColor( const Color& rColor ) mxBackgroundColor = rColor; } +const Color& ImpEditView::GetBackgroundColor() const +{ + return mxBackgroundColor ? *mxBackgroundColor : GetOutputDevice().GetBackground().GetColor(); +} + void ImpEditView::RegisterViewShell(OutlinerViewShell* pViewShell) { mpViewShell = pViewShell; @@ -472,13 +478,9 @@ void ImpEditView::DrawSelectionXOR( EditSelection aTmpSel, vcl::Region* pRegion, // pRegion: When not NULL, then only calculate Region. - OutputDevice* pTarget; - if (pTargetDevice) - pTarget = pTargetDevice; - else - pTarget = getEditViewCallbacks() ? &getEditViewCallbacks()->EditViewOutputDevice() : pOutWin; - bool bClipRegion = pTarget->IsClipRegion(); - vcl::Region aOldRegion = pTarget->GetClipRegion(); + OutputDevice& rTarget = pTargetDevice ? *pTargetDevice : GetOutputDevice(); + bool bClipRegion = rTarget.IsClipRegion(); + vcl::Region aOldRegion = rTarget.GetClipRegion(); std::unique_ptr<tools::PolyPolygon> pPolyPoly; @@ -497,7 +499,7 @@ void ImpEditView::DrawSelectionXOR( EditSelection aTmpSel, vcl::Region* pRegion, tools::Rectangle aTmpOutArea( aOutArea ); if ( aTmpOutArea.GetWidth() > pEditEngine->pImpEditEngine->GetPaperSize().Width() ) aTmpOutArea.SetRight( aTmpOutArea.Left() + pEditEngine->pImpEditEngine->GetPaperSize().Width() ); - pTarget->IntersectClipRegion( aTmpOutArea ); + rTarget.IntersectClipRegion( aTmpOutArea ); if (pOutWin && pOutWin->GetCursor()) pOutWin->GetCursor()->Hide(); @@ -593,7 +595,7 @@ void ImpEditView::DrawSelectionXOR( EditSelection aTmpSel, vcl::Region* pRegion, Range aLineXPosStartEnd = pEditEngine->GetLineXPosStartEnd(pTmpPortion, &rLine); aTopLeft.setX( aLineXPosStartEnd.Min() ); aBottomRight.setX( aLineXPosStartEnd.Max() ); - ImplDrawHighlightRect( pTarget, aTopLeft, aBottomRight, pPolyPoly.get() ); + ImplDrawHighlightRect(rTarget, aTopLeft, aBottomRight, pPolyPoly.get()); } else { @@ -614,7 +616,7 @@ void ImpEditView::DrawSelectionXOR( EditSelection aTmpSel, vcl::Region* pRegion, Point aPt1( std::min( nX1, nX2 ), aTopLeft.Y() ); Point aPt2( std::max( nX1, nX2 ), aBottomRight.Y() ); - ImplDrawHighlightRect( pTarget, aPt1, aPt2, pPolyPoly.get() ); + ImplDrawHighlightRect(rTarget, aPt1, aPt2, pPolyPoly.get()); nTmpStartIndex = nTmpEndIndex; } } @@ -635,10 +637,10 @@ void ImpEditView::DrawSelectionXOR( EditSelection aTmpSel, vcl::Region* pRegion, if (pOutWin && pOutWin->GetCursor()) pOutWin->GetCursor()->Show(); - if ( bClipRegion ) - pTarget->SetClipRegion( aOldRegion ); + if (bClipRegion) + rTarget.SetClipRegion(aOldRegion); else - pTarget->SetClipRegion(); + rTarget.SetClipRegion(); } } @@ -649,14 +651,14 @@ void ImpEditView::GetSelectionRectangles(EditSelection aTmpSel, std::vector<tool aRegion.GetRegionRectangles(rLogicRects); } -void ImpEditView::ImplDrawHighlightRect( OutputDevice* _pTarget, const Point& rDocPosTopLeft, const Point& rDocPosBottomRight, tools::PolyPolygon* pPolyPoly ) +void ImpEditView::ImplDrawHighlightRect( OutputDevice& rTarget, const Point& rDocPosTopLeft, const Point& rDocPosBottomRight, tools::PolyPolygon* pPolyPoly ) { if ( rDocPosTopLeft.X() == rDocPosBottomRight.X() ) return; if (mpLOKSpecialPositioning && pPolyPoly) { - MapUnit eDevUnit = _pTarget->GetMapMode().GetMapUnit(); + MapUnit eDevUnit = rTarget.GetMapMode().GetMapUnit(); tools::Rectangle aSelRect(rDocPosTopLeft, rDocPosBottomRight); aSelRect = mpLOKSpecialPositioning->GetWindowPos(aSelRect, eDevUnit); const Point aRefPoint = mpLOKSpecialPositioning->GetRefPoint(); @@ -671,20 +673,20 @@ void ImpEditView::ImplDrawHighlightRect( OutputDevice* _pTarget, const Point& rD return; } - bool bPixelMode = _pTarget->GetMapMode().GetMapUnit() == MapUnit::MapPixel; + bool bPixelMode = rTarget.GetMapMode().GetMapUnit() == MapUnit::MapPixel; Point aPnt1( GetWindowPos( rDocPosTopLeft ) ); Point aPnt2( GetWindowPos( rDocPosBottomRight ) ); if ( !IsVertical() ) { - lcl_AllignToPixel( aPnt1, _pTarget, +1, 0 ); - lcl_AllignToPixel( aPnt2, _pTarget, 0, ( bPixelMode ? 0 : -1 ) ); + lcl_AllignToPixel(aPnt1, rTarget, +1, 0); + lcl_AllignToPixel(aPnt2, rTarget, 0, (bPixelMode ? 0 : -1)); } else { - lcl_AllignToPixel( aPnt1, _pTarget, 0, +1 ); - lcl_AllignToPixel( aPnt2, _pTarget, ( bPixelMode ? 0 : +1 ), 0 ); + lcl_AllignToPixel(aPnt1, rTarget, 0, +1 ); + lcl_AllignToPixel(aPnt2, rTarget, (bPixelMode ? 0 : +1), 0); } tools::Rectangle aRect( aPnt1, aPnt2 ); @@ -699,20 +701,20 @@ void ImpEditView::ImplDrawHighlightRect( OutputDevice* _pTarget, const Point& rD } else { - vcl::Window* pWindow = dynamic_cast< vcl::Window* >(_pTarget); + vcl::Window* pWindow = dynamic_cast<vcl::Window*>(&rTarget); - if(pWindow) + if (pWindow) { pWindow->Invert( aRect ); } else { - _pTarget->Push(PushFlags::LINECOLOR|PushFlags::FILLCOLOR|PushFlags::RASTEROP); - _pTarget->SetLineColor(); - _pTarget->SetFillColor(COL_BLACK); - _pTarget->SetRasterOp(RasterOp::Invert); - _pTarget->DrawRect(aRect); - _pTarget->Pop(); + rTarget.Push(PushFlags::LINECOLOR|PushFlags::FILLCOLOR|PushFlags::RASTEROP); + rTarget.SetLineColor(); + rTarget.SetFillColor(COL_BLACK); + rTarget.SetRasterOp(RasterOp::Invert); + rTarget.DrawRect(aRect); + rTarget.Pop(); } } } diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index eee427f55c6f..a9cacc93111e 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -334,7 +334,7 @@ protected: void ShowDDCursor( const tools::Rectangle& rRect ); void HideDDCursor(); - void ImplDrawHighlightRect( OutputDevice* _pTarget, const Point& rDocPosTopLeft, const Point& rDocPosBottomRight, tools::PolyPolygon* pPolyPoly ); + void ImplDrawHighlightRect(OutputDevice& rTarget, const Point& rDocPosTopLeft, const Point& rDocPosBottomRight, tools::PolyPolygon* pPolyPoly); tools::Rectangle ImplGetEditCursor(EditPaM& aPaM, GetCursorFlags nShowCursorFlags, sal_Int32& nTextPortionStart, const ParaPortion* pParaPortion) const; @@ -437,8 +437,7 @@ public: bool DoInvalidateMore() const { return bool( nControl & EVControlBits::INVONEMORE ); } void SetBackgroundColor( const Color& rColor ); - const Color & GetBackgroundColor() const { - return ( mxBackgroundColor ? *mxBackgroundColor : pOutWin->GetBackground().GetColor() ); } + const Color& GetBackgroundColor() const; /// Informs this edit view about which view shell contains it. void RegisterViewShell(OutlinerViewShell* pViewShell); diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index 7df8aaa92bf4..faad2057dfb7 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -3857,7 +3857,7 @@ void ImpEditEngine::Paint( ImpEditView* pView, const tools::Rectangle& rRect, Ou tools::Rectangle aClipRect( pView->GetOutputArea() ); aClipRect.Intersection( rRect ); - OutputDevice* pTarget = pTargetDevice ? pTargetDevice : pView->GetWindow(); + OutputDevice& rTarget = pTargetDevice ? *pTargetDevice : pView->GetOutputDevice(); Point aStartPos; if ( !IsVertical() ) @@ -3895,18 +3895,18 @@ void ImpEditEngine::Paint( ImpEditView* pView, const tools::Rectangle& rRect, Ou aClipRect.SetRight( nMaxX ); } - bool bClipRegion = pTarget->IsClipRegion(); - vcl::Region aOldRegion = pTarget->GetClipRegion(); - pTarget->IntersectClipRegion( aClipRect ); + bool bClipRegion = rTarget.IsClipRegion(); + vcl::Region aOldRegion = rTarget.GetClipRegion(); + rTarget.IntersectClipRegion( aClipRect ); - Paint( pTarget, aClipRect, aStartPos ); + Paint( &rTarget, aClipRect, aStartPos ); if ( bClipRegion ) - pTarget->SetClipRegion( aOldRegion ); + rTarget.SetClipRegion( aOldRegion ); else - pTarget->SetClipRegion(); + rTarget.SetClipRegion(); - pView->DrawSelectionXOR(pView->GetEditSelection(), nullptr, pTarget); + pView->DrawSelectionXOR(pView->GetEditSelection(), nullptr, &rTarget); } void ImpEditEngine::InsertContent( ContentNode* pNode, sal_Int32 nPos ) diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx index 9e2a551e2481..d3b24a16a120 100644 --- a/editeng/source/editeng/impedit4.cxx +++ b/editeng/source/editeng/impedit4.cxx @@ -19,6 +19,7 @@ #include <vcl/svapp.hxx> +#include <vcl/window.hxx> #include <svl/srchitem.hxx> #include <editeng/lspcitem.hxx> |