summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2022-08-01 16:06:11 +0200
committerGökay ŞATIR <gokaysatir@collabora.com>2022-08-05 11:16:17 +0200
commita2759b539bcd7bf2e7b88caa2f78c0215230d026 (patch)
tree562e1e22060b6a6eba9d11dca74e45f9c3f5d8d9
parent469ea15f388c8c8fc263324b6be77e5bfa941b71 (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.cxx12
-rw-r--r--include/svx/svdpntv.hxx4
-rw-r--r--include/vcl/ITiledRenderable.hxx5
-rw-r--r--sd/source/ui/inc/unomodel.hxx4
-rw-r--r--sd/source/ui/unoidl/unomodel.cxx13
-rw-r--r--svx/source/svdraw/svdpntv.cxx4
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())