diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2022-08-01 16:06:11 +0200 |
---|---|---|
committer | Gökay ŞATIR <gokaysatir@collabora.com> | 2022-08-05 11:16:17 +0200 |
commit | a2759b539bcd7bf2e7b88caa2f78c0215230d026 (patch) | |
tree | 562e1e22060b6a6eba9d11dca74e45f9c3f5d8d9 | |
parent | 469ea15f388c8c8fc263324b6be77e5bfa941b71 (diff) |
lok: Dont render active text edit on slide previews
- extend ITiledRenderable interface to pass active text
edit drawing state to the SdXImpressDocument
- when painting tiles - allow text edit only for current part
- pass new setting also to SdrPaintView where painting happens
Change-Id: Ib4ff226961a76129f4f5ff11c90694cd46a83a6b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137676
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Mert Tumer <mert.tumer@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137840
-rw-r--r-- | desktop/source/lib/init.cxx | 12 | ||||
-rw-r--r-- | include/svx/svdpntv.hxx | 4 | ||||
-rw-r--r-- | include/vcl/ITiledRenderable.hxx | 5 | ||||
-rw-r--r-- | sd/source/ui/inc/unomodel.hxx | 4 | ||||
-rw-r--r-- | sd/source/ui/unoidl/unomodel.cxx | 13 | ||||
-rw-r--r-- | svx/source/svdraw/svdpntv.cxx | 4 |
6 files changed, 39 insertions, 3 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index e787252525fb..4abe6f2c5166 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -3679,8 +3679,20 @@ static void doc_paintPartTile(LibreOfficeKitDocument* pThis, } } + ITiledRenderable* pDoc = getTiledRenderable(pThis); + if (!pDoc) + { + SetLastExceptionMsg("Document doesn't support tiled rendering"); + return; + } + + bool bPaintTextEdit = nPart == nOrigPart; + pDoc->setPaintTextEdit( bPaintTextEdit ); + doc_paintTile(pThis, pBuffer, nCanvasWidth, nCanvasHeight, nTilePosX, nTilePosY, nTileWidth, nTileHeight); + pDoc->setPaintTextEdit( true ); + if (!isText && nPart != nOrigPart) { doc_setPartImpl(pThis, nOrigPart, false); diff --git a/include/svx/svdpntv.hxx b/include/svx/svdpntv.hxx index ad68da20dec2..1f46fc584800 100644 --- a/include/svx/svdpntv.hxx +++ b/include/svx/svdpntv.hxx @@ -193,6 +193,7 @@ protected: bool mbHideChart : 1; bool mbHideDraw : 1; // hide draw objects other than form controls bool mbHideFormControl : 1; // hide form controls only + bool mbPaintTextEdit : 1; // if should paint currently edited text public: // Interface for PagePaintingAllowed flag @@ -506,6 +507,9 @@ public: // Access to Drawinglayer configuration options const SvtOptionsDrawinglayer& getOptionsDrawinglayer() const { return maDrawinglayerOpt; } + + /// @see vcl::ITiledRenderable::setPaintTextEdit(). + void SetPaintTextEdit(bool bPaint) { mbPaintTextEdit = bPaint; } }; #endif // INCLUDED_SVX_SVDPNTV_HXX diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx index 306623234776..dceb4c9f462d 100644 --- a/include/vcl/ITiledRenderable.hxx +++ b/include/vcl/ITiledRenderable.hxx @@ -337,6 +337,11 @@ public: { return std::vector<basegfx::B2DRange>(); } + + /** + * Allow / disable drawing current text edit (used in Impress for slide previews) + */ + virtual void setPaintTextEdit(bool) {} }; } // namespace vcl diff --git a/sd/source/ui/inc/unomodel.hxx b/sd/source/ui/inc/unomodel.hxx index 65614db92742..78e0c03b5b53 100644 --- a/sd/source/ui/inc/unomodel.hxx +++ b/sd/source/ui/inc/unomodel.hxx @@ -118,6 +118,8 @@ private: OUString maBuildId; + bool mbPaintTextEdit; + void initializeDocument(); sd::DrawViewShell* GetViewShell(); @@ -277,6 +279,8 @@ public: { return mbDisposed; } + /// @see vcl::ITiledRenderable::setPaintTextEdit(). + virtual void setPaintTextEdit(bool bPaint) override { mbPaintTextEdit = bPaint; } // XComponent diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx index 35caf84d649a..66ffac07e200 100644 --- a/sd/source/ui/unoidl/unomodel.cxx +++ b/sd/source/ui/unoidl/unomodel.cxx @@ -236,7 +236,8 @@ SdXImpressDocument::SdXImpressDocument(::sd::DrawDocShell* pShell, bool bClipBoa mbDisposed(false), mbImpressDoc( pShell && pShell->GetDoc() && pShell->GetDoc()->GetDocumentType() == DocumentType::Impress ), mbClipBoard( bClipBoard ), - mpPropSet( ImplGetDrawModelPropertySet() ) + mpPropSet( ImplGetDrawModelPropertySet() ), + mbPaintTextEdit( true ) { if( mpDoc ) { @@ -255,7 +256,8 @@ SdXImpressDocument::SdXImpressDocument(SdDrawDocument* pDoc, bool bClipBoard) mbDisposed(false), mbImpressDoc( pDoc && pDoc->GetDocumentType() == DocumentType::Impress ), mbClipBoard( bClipBoard ), - mpPropSet( ImplGetDrawModelPropertySet() ) + mpPropSet( ImplGetDrawModelPropertySet() ), + mbPaintTextEdit( true ) { if( mpDoc ) { @@ -2278,8 +2280,15 @@ void SdXImpressDocument::paintTile( VirtualDevice& rDevice, Size aSize(nTileWidthHMM, nTileHeightHMM); ::tools::Rectangle aRect(aPoint, aSize); + SdrView* pView = pViewSh->GetDrawView(); + if (comphelper::LibreOfficeKit::isActive()) + pView->SetPaintTextEdit(mbPaintTextEdit); + pViewSh->GetView()->CompleteRedraw(&rDevice, vcl::Region(aRect)); + if (comphelper::LibreOfficeKit::isActive()) + pView->SetPaintTextEdit(true); + LokChartHelper::PaintAllChartsOnTile(rDevice, nOutputWidth, nOutputHeight, nTilePosX, nTilePosY, nTileWidth, nTileHeight); diff --git a/svx/source/svdraw/svdpntv.cxx b/svx/source/svdraw/svdpntv.cxx index 05dbeb02d2a6..61da840dda2d 100644 --- a/svx/source/svdraw/svdpntv.cxx +++ b/svx/source/svdraw/svdpntv.cxx @@ -160,6 +160,7 @@ SdrPaintView::SdrPaintView(SdrModel& rSdrModel, OutputDevice* pOut) , mbHideChart(false) , mbHideDraw(false) , mbHideFormControl(false) + , mbPaintTextEdit(true) , maGridColor(COL_BLACK) { maComeBackIdle.SetPriority(TaskPriority::REPAINT); @@ -638,7 +639,8 @@ void SdrPaintView::EndCompleteRedraw(SdrPaintWindow& rPaintWindow, bool bPaintFo // early and paint text edit to window. if(IsTextEdit() && GetSdrPageView()) { - static_cast< SdrView* >(this)->TextEditDrawing(rPaintWindow); + if (!comphelper::LibreOfficeKit::isActive() || mbPaintTextEdit) + static_cast< SdrView* >(this)->TextEditDrawing(rPaintWindow); } if (comphelper::LibreOfficeKit::isActive()) |