diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-08-19 11:10:43 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-08-19 10:38:02 +0000 |
commit | 8b4705e0e0c76503b1ca61cb567d222f49466fc5 (patch) | |
tree | 7472d23e8580a3afb17b2ba19f234daa2c0f2ad0 | |
parent | cf31f48acca45396588aa410ddbe613b92f9fbce (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.hxx | 4 | ||||
-rw-r--r-- | sfx2/source/view/viewimp.hxx | 2 | ||||
-rw-r--r-- | sfx2/source/view/viewsh.cxx | 14 | ||||
-rw-r--r-- | sw/inc/viewsh.hxx | 2 | ||||
-rw-r--r-- | sw/source/core/view/viewsh.cxx | 4 | ||||
-rw-r--r-- | sw/source/core/view/vnew.cxx | 2 |
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() |