summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2019-02-18 21:50:53 +0100
committerMiklos Vajna <vmiklos@collabora.com>2019-02-19 09:09:40 +0100
commit9c1383e4da135db28c422752153e9a77558e8c2f (patch)
tree7bbce68c4819152cf833e42adbd7c3b5d1db415d /sw
parentafc337131439fdc265706ccf27ef8b5e86f824d0 (diff)
tdf#101873 sw: fix search for second term after double not found
Regression from commit 8d2fe8d7e5f374f3a106a4fc58ef597a52815ad0 (SwView::SearchAndWrap: fix WrapAround search in fly frames, 2015-06-03). The search implementation looks in the body text, then in case searching in extra content was not enabled already, it attempts to search there. The problem was that while the wrap-around implementation intended to do the same, it failed to unset the "search in extra" flag in case nothing was found, fix that now. Change-Id: Idf078e464824cad69c9709309435f2db207503b8 Reviewed-on: https://gerrit.libreoffice.org/67986 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'sw')
-rw-r--r--sw/qa/extras/uiwriter/uiwriter2.cxx36
-rw-r--r--sw/source/uibase/uiview/viewsrch.cxx2
2 files changed, 38 insertions, 0 deletions
diff --git a/sw/qa/extras/uiwriter/uiwriter2.cxx b/sw/qa/extras/uiwriter/uiwriter2.cxx
index 0f1cb7f2ad9d..33b8ac9b53ed 100644
--- a/sw/qa/extras/uiwriter/uiwriter2.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter2.cxx
@@ -60,6 +60,7 @@ public:
void testTdf122901();
void testTdf122942();
void testTdf52391();
+ void testTdf101873();
CPPUNIT_TEST_SUITE(SwUiWriterTest2);
CPPUNIT_TEST(testRedlineMoveInsertInDelete);
@@ -81,6 +82,7 @@ public:
CPPUNIT_TEST(testTdf122901);
CPPUNIT_TEST(testTdf122942);
CPPUNIT_TEST(testTdf52391);
+ CPPUNIT_TEST(testTdf101873);
CPPUNIT_TEST_SUITE_END();
private:
@@ -878,6 +880,40 @@ void SwUiWriterTest2::testTdf52391()
CPPUNIT_ASSERT_EQUAL(OUString("Portion1Portion2"), xRun->getString());
}
+void SwUiWriterTest2::testTdf101873()
+{
+ SwDoc* pDoc = createDoc();
+ CPPUNIT_ASSERT(pDoc);
+
+ SwDocShell* pDocShell = pDoc->GetDocShell();
+ CPPUNIT_ASSERT(pDocShell);
+
+ SwWrtShell* pWrtShell = pDocShell->GetWrtShell();
+ CPPUNIT_ASSERT(pWrtShell);
+
+ // Insert some content.
+ pWrtShell->Insert("something");
+
+ // Search for something which does not exist, twice.
+ uno::Sequence<beans::PropertyValue> aFirst(comphelper::InitPropertySequence({
+ { "SearchItem.SearchString", uno::makeAny(OUString("fig")) },
+ { "SearchItem.Backward", uno::makeAny(false) },
+ }));
+ lcl_dispatchCommand(mxComponent, ".uno:ExecuteSearch", aFirst);
+ lcl_dispatchCommand(mxComponent, ".uno:ExecuteSearch", aFirst);
+
+ uno::Sequence<beans::PropertyValue> aSecond(comphelper::InitPropertySequence({
+ { "SearchItem.SearchString", uno::makeAny(OUString("something")) },
+ { "SearchItem.Backward", uno::makeAny(false) },
+ }));
+ lcl_dispatchCommand(mxComponent, ".uno:ExecuteSearch", aSecond);
+
+ // Without the accompanying fix in place, this test would have failed with "Expected: something;
+ // Actual:", i.e. searching for "something" failed, even if it was inserted above.
+ SwShellCursor* pShellCursor = pWrtShell->getShellCursor(false);
+ CPPUNIT_ASSERT_EQUAL(OUString("something"), pShellCursor->GetText());
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SwUiWriterTest2);
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/uiview/viewsrch.cxx b/sw/source/uibase/uiview/viewsrch.cxx
index ca2aa004a257..a4c2f2d32582 100644
--- a/sw/source/uibase/uiview/viewsrch.cxx
+++ b/sw/source/uibase/uiview/viewsrch.cxx
@@ -608,6 +608,8 @@ bool SwView::SearchAndWrap(bool bApi)
m_bExtra = true;
if (FUNC_Search(aOpts))
m_bFound = true;
+ else
+ m_bExtra = false;
}
m_pWrtShell->EndAllAction();