summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2016-08-19 11:10:43 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2016-08-19 10:38:02 +0000
commit8b4705e0e0c76503b1ca61cb567d222f49466fc5 (patch)
tree7472d23e8580a3afb17b2ba19f234daa2c0f2ad0
parentcf31f48acca45396588aa410ddbe613b92f9fbce (diff)
sw: remove never read SwViewShell::mbInLibreOfficeKitCallback
This was read in the now removed SwViewShell::libreOfficeKitCallback(), so add a similar flag to SfxViewShell instead, and restore the lost condition. This fixes paint/invalidation loops when inserting the first comment to a Writer document in gtktiledviewer. Change-Id: Iad5ef90848f3b309ef8db4553760dd36d9b8a37c Reviewed-on: https://gerrit.libreoffice.org/28236 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Jenkins <ci@libreoffice.org>
-rw-r--r--include/sfx2/viewsh.hxx4
-rw-r--r--sfx2/source/view/viewimp.hxx2
-rw-r--r--sfx2/source/view/viewsh.cxx14
-rw-r--r--sw/inc/viewsh.hxx2
-rw-r--r--sw/source/core/view/viewsh.cxx4
-rw-r--r--sw/source/core/view/vnew.cxx2
6 files changed, 22 insertions, 6 deletions
diff --git a/include/sfx2/viewsh.hxx b/include/sfx2/viewsh.hxx
index b4b38042164c..d20d4e35de55 100644
--- a/include/sfx2/viewsh.hxx
+++ b/include/sfx2/viewsh.hxx
@@ -331,6 +331,10 @@ public:
void setTiledSearching(bool bTiledSearching);
/// Are we doing tiled searching?
bool isTiledSearching() const;
+ /// Set if we are doing tiled painting.
+ void setTiledPainting(bool bTiledPainting);
+ /// Are we doing tiled painting?
+ bool isTiledPainting() const;
/// See lok::Document::getPart().
virtual int getPart() const;
virtual void dumpAsXml(struct _xmlTextWriter* pWriter) const;
diff --git a/sfx2/source/view/viewimp.hxx b/sfx2/source/view/viewimp.hxx
index 95fdf8260df4..78481650958c 100644
--- a/sfx2/source/view/viewimp.hxx
+++ b/sfx2/source/view/viewimp.hxx
@@ -62,6 +62,8 @@ struct SfxViewShell_Impl
void* m_pLibreOfficeKitViewData;
/// Set if we are in the middle of a tiled search.
bool m_bTiledSearching;
+ /// Set if we are in the middle of a tiled paint.
+ bool m_bTiledPainting;
static sal_uInt32 m_nLastViewShellId;
const sal_uInt32 m_nViewShellId;
diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx
index 631d712c1dfe..f2d8e4875b2a 100644
--- a/sfx2/source/view/viewsh.cxx
+++ b/sfx2/source/view/viewsh.cxx
@@ -255,6 +255,7 @@ SfxViewShell_Impl::SfxViewShell_Impl(SfxViewShellFlags const nFlags)
, m_pLibreOfficeKitViewCallback(nullptr)
, m_pLibreOfficeKitViewData(nullptr)
, m_bTiledSearching(false)
+, m_bTiledPainting(false)
, m_nViewShellId(SfxViewShell_Impl::m_nLastViewShellId++)
{}
@@ -1473,6 +1474,9 @@ void SfxViewShell::registerLibreOfficeKitViewCallback(LibreOfficeKitCallback pCa
void SfxViewShell::libreOfficeKitViewCallback(int nType, const char* pPayload) const
{
+ if (pImpl->m_bTiledPainting)
+ return;
+
if (pImpl->m_bTiledSearching)
{
switch (nType)
@@ -1501,6 +1505,16 @@ bool SfxViewShell::isTiledSearching() const
return pImpl->m_bTiledSearching;
}
+void SfxViewShell::setTiledPainting(bool bTiledPainting)
+{
+ pImpl->m_bTiledPainting = bTiledPainting;
+}
+
+bool SfxViewShell::isTiledPainting() const
+{
+ return pImpl->m_bTiledPainting;
+}
+
int SfxViewShell::getPart() const
{
return 0;
diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx
index abeea02675da..8223c0d29190 100644
--- a/sw/inc/viewsh.hxx
+++ b/sw/inc/viewsh.hxx
@@ -190,8 +190,6 @@ protected:
sal_uInt16 mnLockPaint; ///< != 0 if Paint is locked.
bool mbSelectAll; ///< Special select all mode: whole document selected, even if doc starts with table.
- bool mbInLibreOfficeKitCallback;
-
/// The virtual device we paint to will end up on the screen.
bool mbOutputToWindow;
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 6c8a94b74183..64b6f7b6b979 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -1842,7 +1842,7 @@ void SwViewShell::PaintTile(VirtualDevice &rDevice, int contextWidth, int contex
// TODO clean up SwViewShell's approach to output devices (the many of
// them - mpBufferedOut, mpOut, mpWin, ...)
OutputDevice *pSaveOut = mpOut;
- mbInLibreOfficeKitCallback = true;
+ GetSfxViewShell()->setTiledPainting(true);
mpOut = &rDevice;
// resizes the virtual device so to contain the entries context
@@ -1895,7 +1895,7 @@ void SwViewShell::PaintTile(VirtualDevice &rDevice, int contextWidth, int contex
// SwViewShell's output device tear down
mpOut = pSaveOut;
- mbInLibreOfficeKitCallback = false;
+ GetSfxViewShell()->setTiledPainting(false);
}
void SwViewShell::SetBrowseBorder( const Size& rNew )
diff --git a/sw/source/core/view/vnew.cxx b/sw/source/core/view/vnew.cxx
index f98cf74a83ec..dd4fc972072d 100644
--- a/sw/source/core/view/vnew.cxx
+++ b/sw/source/core/view/vnew.cxx
@@ -164,7 +164,6 @@ SwViewShell::SwViewShell( SwDoc& rDocument, vcl::Window *pWindow,
mnStartAction( 0 ),
mnLockPaint( 0 ),
mbSelectAll(false),
- mbInLibreOfficeKitCallback(false),
mbOutputToWindow(false),
mpPrePostOutDev(nullptr),
maPrePostMapMode()
@@ -241,7 +240,6 @@ SwViewShell::SwViewShell( SwViewShell& rShell, vcl::Window *pWindow,
mnStartAction( 0 ),
mnLockPaint( 0 ),
mbSelectAll(false),
- mbInLibreOfficeKitCallback(false),
mbOutputToWindow(false),
mpPrePostOutDev(nullptr),
maPrePostMapMode()