summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2017-03-13 19:03:48 +0100
committerJan Holesovsky <kendy@collabora.com>2017-03-13 19:13:31 +0100
commit73cd9f7fb898860428e1901535351083aa439c73 (patch)
tree3278a1b840a301c5969e53ef2317e9cebe5f042f /sd
parentcd357d1d9a45ccd9d42cbf3f5c4fc88b1e122153 (diff)
sd lok: Don't search on master pages & notes in Impress.
Change-Id: I43ed9f53618dca09e0289bffadc2c05056e0eebb
Diffstat (limited to 'sd')
-rw-r--r--sd/qa/unit/tiledrendering/tiledrendering.cxx17
-rw-r--r--sd/source/ui/view/Outliner.cxx10
2 files changed, 24 insertions, 3 deletions
diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index 379f2fe48e16..2f38bc3e4d4c 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -72,6 +72,7 @@ public:
void testSearchAllSelections();
void testSearchAllNotifications();
void testSearchAllFollowedBySearch();
+ void testDontSearchInMasterPages();
void testInsertDeletePage();
void testInsertTable();
void testPartHash();
@@ -106,6 +107,7 @@ public:
CPPUNIT_TEST(testSearchAllSelections);
CPPUNIT_TEST(testSearchAllNotifications);
CPPUNIT_TEST(testSearchAllFollowedBySearch);
+ CPPUNIT_TEST(testDontSearchInMasterPages);
CPPUNIT_TEST(testInsertDeletePage);
CPPUNIT_TEST(testInsertTable);
CPPUNIT_TEST(testPartHash);
@@ -624,6 +626,21 @@ void SdTiledRenderingTest::testSearchAllFollowedBySearch()
CPPUNIT_ASSERT_EQUAL(OString("match"), pXImpressDocument->getTextSelection("text/plain;charset=utf-8", aUsedFormat));
}
+void SdTiledRenderingTest::testDontSearchInMasterPages()
+{
+ comphelper::LibreOfficeKit::setActive();
+ SdXImpressDocument* pXImpressDocument = createDoc("dummy.odp");
+ sd::ViewShell* pViewShell = pXImpressDocument->GetDocShell()->GetViewShell();
+ pViewShell->GetViewShellBase().registerLibreOfficeKitViewCallback(&SdTiledRenderingTest::callback, this);
+
+ // This should trigger the not-found callback ("date" is present only on
+ // the master page)
+ lcl_search("date");
+ CPPUNIT_ASSERT_EQUAL(false, m_bFound);
+
+ comphelper::LibreOfficeKit::setActive(false);
+}
+
namespace
{
diff --git a/sd/source/ui/view/Outliner.cxx b/sd/source/ui/view/Outliner.cxx
index 396e0ef75469..115addbfdf10 100644
--- a/sd/source/ui/view/Outliner.cxx
+++ b/sd/source/ui/view/Outliner.cxx
@@ -1074,8 +1074,12 @@ void SdOutliner::ProvideNextTextObject()
if (maObjectIterator != sd::outliner::OutlinerContainer(this).end())
{
maCurrentPosition = *maObjectIterator;
+
+ // LOK: do not descent to notes or master pages when searching
+ bool bForbiddenPage = comphelper::LibreOfficeKit::isActive() && (maCurrentPosition.mePageKind != PageKind::Standard || maCurrentPosition.meEditMode != EditMode::Page);
+
// Switch to the current object only if it is a valid text object.
- if (IsValidTextObject (maCurrentPosition))
+ if (!bForbiddenPage && IsValidTextObject(maCurrentPosition))
{
// Don't set yet in case of searching: the text object may not match.
if (meMode != SEARCH)
@@ -1085,9 +1089,9 @@ void SdOutliner::ProvideNextTextObject()
}
++maObjectIterator;
- if (mpObj != nullptr)
+ if (mpObj)
{
- PutTextIntoOutliner ();
+ PutTextIntoOutliner();
std::shared_ptr<sd::ViewShell> pViewShell (mpWeakViewShell.lock());
if (pViewShell != nullptr)