[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.1' - sc/source

Jan Holesovsky kendy at collabora.com
Tue Dec 6 08:06:00 UTC 2016


 sc/source/ui/drawfunc/fuins1.cxx |   27 +++++++++++++++++++++++++++
 sc/source/ui/view/tabvwsh4.cxx   |   25 ++++++++++++++++++++++++-
 2 files changed, 51 insertions(+), 1 deletion(-)

New commits:
commit fe87a31885dc870a9a8e4c4dcb105a4a5627164f
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Mon Dec 5 22:45:43 2016 +0100

    Invalidate the entire sheet after having inserted the image.
    
    This is a hack; but the ViewObjectContacts are unreliable with tiled
    rendering, and we are missing invalidates due to that.
    
    Change-Id: Ia2475d4a042be1db0ea6f170cf66f271397ee299
    Reviewed-on: https://gerrit.libreoffice.org/31659
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/sc/source/ui/drawfunc/fuins1.cxx b/sc/source/ui/drawfunc/fuins1.cxx
index c7fd4c9..9dc65bf 100644
--- a/sc/source/ui/drawfunc/fuins1.cxx
+++ b/sc/source/ui/drawfunc/fuins1.cxx
@@ -23,6 +23,7 @@
 #include <svx/svdpage.hxx>
 #include <svx/svdpagv.hxx>
 #include <svx/svdview.hxx>
+#include <svx/svdundo.hxx>
 #include <svx/linkwarn.hxx>
 #include <vcl/graphicfilter.hxx>
 #include <svl/stritem.hxx>
@@ -41,6 +42,10 @@
 #include "sc.hrc"
 #include "globstr.hrc"
 
+#include <LibreOfficeKit/LibreOfficeKitEnums.h>
+#include <comphelper/lok.hxx>
+#include <sfx2/lokhelper.hxx>
+
 using namespace ::com::sun::star;
 
 void ScLimitSizeOnDrawPage( Size& rSize, Point& rPos, const Size& rPage )
@@ -251,6 +256,28 @@ FuInsertGraphic::FuInsertGraphic( ScTabViewShell*   pViewSh,
         if ( nError == GRFILTER_OK )
         {
             lcl_InsertGraphic( aGraphic, aFileName, aFilterName, bAsLink, true, pViewSh, pWindow, pView );
+
+            // FIXME HACK: The ViewObjectContact sdr thing is not set up well
+            // enough for the invalidate to work here automagically, because
+            // we set it up for each tile, and it does not survive for too
+            // long.  Luckily for inserting an image, we can live with a full
+            // invalidate, so let's just do it for now.
+            if (comphelper::LibreOfficeKit::isActive())
+            {
+                std::stringstream ss;
+                ss << "EMPTY";
+                if (comphelper::LibreOfficeKit::isPartInInvalidation())
+                    ss << ", " << pViewSh->getPart();
+                OString aPayload = ss.str().c_str();
+
+                SfxViewShell* pCurView = SfxViewShell::GetFirst();
+                while (pCurView)
+                {
+                    pCurView->libreOfficeKitViewCallback(LOK_CALLBACK_INVALIDATE_TILES, aPayload.getStr());
+
+                    pCurView = SfxViewShell::GetNext(*pCurView);
+                }
+            }
         }
     }
     else
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index 4ef54ad..aa6f763 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -572,7 +572,30 @@ void ScTabViewShell::UpdateDrawShell()
 
     SdrView* pDrView = GetSdrView();
     if ( pDrView && !pDrView->AreObjectsMarked() && !IsDrawSelMode() )
-        SetDrawShell( false );
+    {
+        SetDrawShell(false);
+
+        // FIXME HACK: The ViewObjectContact sdr thing is not set up well
+        // enough for the invalidate to work here automagically, because
+        // we set it up for each tile, and it does not survive for too
+        // long.
+        if (comphelper::LibreOfficeKit::isActive())
+        {
+            std::stringstream ss;
+            ss << "EMPTY";
+            if (comphelper::LibreOfficeKit::isPartInInvalidation())
+                ss << ", " << getPart();
+            OString aPayload = ss.str().c_str();
+
+            SfxViewShell* pCurView = SfxViewShell::GetFirst();
+            while (pCurView)
+            {
+                pCurView->libreOfficeKitViewCallback(LOK_CALLBACK_INVALIDATE_TILES, aPayload.getStr());
+
+                pCurView = SfxViewShell::GetNext(*pCurView);
+            }
+        }
+    }
 }
 
 void ScTabViewShell::SetDrawShellOrSub()


More information about the Libreoffice-commits mailing list