[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