[Libreoffice-commits] core.git: sd/qa sd/source
Miklos Vajna
vmiklos at collabora.co.uk
Thu Sep 15 12:50:10 UTC 2016
sd/qa/unit/tiledrendering/tiledrendering.cxx | 19 ++++++++++++++++++-
sd/source/ui/view/ViewShellBase.cxx | 17 ++++++++++++++++-
2 files changed, 34 insertions(+), 2 deletions(-)
New commits:
commit e93b30c9d9f4deba597b73e04df7d4082b779b69
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Thu Sep 15 12:17:14 2016 +0200
sd draw text: emit LOK_CALLBACK_TEXT_VIEW_SELECTION from registerCallback()
This is basically the Impress equivalent of commit
2ea385a54b53797ab3960869012f3ce3268eab2c (sw draw text: emit
LOK_CALLBACK_TEXT_VIEW_SELECTION from registerCallback(), 2016-09-13).
Change-Id: Ib138845de6db2a8ad49dc8596af3e05ec5278610
diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index 28e0ac8..67455cf 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -874,6 +874,7 @@ public:
bool m_bTilesInvalidated;
std::map<int, bool> m_aViewCursorInvalidations;
std::map<int, bool> m_aViewCursorVisibilities;
+ bool m_bViewSelectionSet;
ViewCallback()
: m_bGraphicSelectionInvalidated(false),
@@ -881,7 +882,8 @@ public:
m_nPart(0),
m_bCursorVisibleChanged(false),
m_bViewLock(false),
- m_bTilesInvalidated(false)
+ m_bTilesInvalidated(false),
+ m_bViewSelectionSet(false)
{
}
@@ -945,6 +947,11 @@ public:
m_aViewCursorVisibilities[nViewId] = OString("true") == pPayload;
}
break;
+ case LOK_CALLBACK_TEXT_VIEW_SELECTION:
+ {
+ m_bViewSelectionSet = true;
+ }
+ break;
}
}
};
@@ -1193,6 +1200,12 @@ void SdTiledRenderingTest::testCreateViewTextCursor()
SdrView* pSdrView = pViewShell->GetView();
CPPUNIT_ASSERT(pSdrView->IsTextEdit());
+ // Create an editeng text selection.
+ EditView& rEditView = pSdrView->GetTextEditOutlinerView()->GetEditView();
+ // 0th para, 0th char -> 0th para, 1st char.
+ ESelection aWordSelection(0, 0, 0, 1);
+ rEditView.SetSelection(aWordSelection);
+
// Make sure that creating a new view either doesn't affect the previous
// one, or at least the effect is not visible at the end.
aView1.m_aViewCursorInvalidations.clear();
@@ -1200,6 +1213,7 @@ void SdTiledRenderingTest::testCreateViewTextCursor()
SfxLokHelper::createView();
pXImpressDocument->initializeForTiledRendering({});
ViewCallback aView2;
+ aView2.m_bViewSelectionSet = false;
SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView2);
bool bFoundCursor = false;
for (const auto& rInvalidation : aView1.m_aViewCursorInvalidations)
@@ -1215,6 +1229,9 @@ void SdTiledRenderingTest::testCreateViewTextCursor()
// This failed: the second view created an unexpected view cursor in the
// first view.
CPPUNIT_ASSERT(!bFoundCursor);
+ // This failed: the text view selection of the first view wasn't seen by
+ // the second view.
+ CPPUNIT_ASSERT(aView2.m_bViewSelectionSet);
mxComponent->dispose();
mxComponent.clear();
diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx
index d5fce1d..8513599 100644
--- a/sd/source/ui/view/ViewShellBase.cxx
+++ b/sd/source/ui/view/ViewShellBase.cxx
@@ -88,6 +88,7 @@
#include <tools/diagnose_ex.h>
#include <sfx2/lokhelper.hxx>
#include <LibreOfficeKit/LibreOfficeKitEnums.h>
+#include <editeng/editview.hxx>
#include "fubullet.hxx"
#include "drawview.hxx"
@@ -1049,7 +1050,21 @@ void ViewShellBase::NotifyCursor(SfxViewShell* pOtherShell) const
if (!pDrawView)
return;
- pDrawView->AdjustMarkHdl(pOtherShell);
+ if (pDrawView->GetTextEditObject())
+ {
+ // Blinking cursor.
+ EditView& rEditView = pDrawView->GetTextEditOutlinerView()->GetEditView();
+ rEditView.RegisterOtherShell(pOtherShell);
+ rEditView.ShowCursor();
+ rEditView.RegisterOtherShell(nullptr);
+ // Text selection, if any.
+ rEditView.DrawSelection(pOtherShell);
+ }
+ else
+ {
+ // Graphic selection.
+ pDrawView->AdjustMarkHdl(pOtherShell);
+ }
}
//===== ViewShellBase::Implementation =========================================
More information about the Libreoffice-commits
mailing list