|
 |
f325b2 |
From fea53bcac5aaf5e18baf90c8bd6f0fb4142e2f63 Mon Sep 17 00:00:00 2001
|
|
 |
f325b2 |
From: Miklos Vajna <vmiklos@collabora.co.uk>
|
|
 |
f325b2 |
Date: Wed, 14 Oct 2015 11:38:47 +0200
|
|
 |
f325b2 |
Subject: [PATCH 206/398] sd tiled rendering: initial search all
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Change-Id: Icee3a07103fad1bf70637fbf23299f50b7ad838d
|
|
 |
f325b2 |
(cherry picked from commit 32d573cdd13126c13e46b4e3684446e888e8b8e6)
|
|
 |
f325b2 |
---
|
|
 |
f325b2 |
sd/inc/Outliner.hxx | 5 ++-
|
|
 |
f325b2 |
sd/source/ui/view/Outliner.cxx | 71 +++++++++++++++++++++++++++++-------------
|
|
 |
f325b2 |
2 files changed, 54 insertions(+), 22 deletions(-)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
diff --git a/sd/inc/Outliner.hxx b/sd/inc/Outliner.hxx
|
|
 |
f325b2 |
index 26ad3495357a..f01e244de308 100644
|
|
 |
f325b2 |
--- a/sd/inc/Outliner.hxx
|
|
 |
f325b2 |
+++ b/sd/inc/Outliner.hxx
|
|
 |
f325b2 |
@@ -357,11 +357,14 @@ private:
|
|
 |
f325b2 |
bool SearchAndReplaceAll();
|
|
 |
f325b2 |
|
|
 |
f325b2 |
/** Do search and replace for next match.
|
|
 |
f325b2 |
+ @param pSelections
|
|
 |
f325b2 |
+ When tiled rendering and not 0, then don't emit LOK events, instead
|
|
 |
f325b2 |
+ assume the caller will do so.
|
|
 |
f325b2 |
@return
|
|
 |
f325b2 |
The return value specifies whether the search ended (</sal_True>) or
|
|
 |
f325b2 |
another call to this method is required (</sal_False>).
|
|
 |
f325b2 |
*/
|
|
 |
f325b2 |
- bool SearchAndReplaceOnce();
|
|
 |
f325b2 |
+ bool SearchAndReplaceOnce(std::vector<OString>* pSelections = 0);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
/** Detect changes of the document or view and react accordingly. Such
|
|
 |
f325b2 |
changes may occur because different calls to
|
|
 |
f325b2 |
diff --git a/sd/source/ui/view/Outliner.cxx b/sd/source/ui/view/Outliner.cxx
|
|
 |
f325b2 |
index 41bf43d253f4..e02e879494b8 100644
|
|
 |
f325b2 |
--- a/sd/source/ui/view/Outliner.cxx
|
|
 |
f325b2 |
+++ b/sd/source/ui/view/Outliner.cxx
|
|
 |
f325b2 |
@@ -490,7 +490,7 @@ bool Outliner::StartSearchAndReplace (const SvxSearchItem* pSearchItem)
|
|
 |
f325b2 |
Initialize ( ! mpSearchItem->GetBackward());
|
|
 |
f325b2 |
|
|
 |
f325b2 |
const SvxSearchCmd nCommand (mpSearchItem->GetCommand());
|
|
 |
f325b2 |
- if (nCommand == SvxSearchCmd::REPLACE_ALL)
|
|
 |
f325b2 |
+ if (nCommand == SvxSearchCmd::FIND_ALL || nCommand == SvxSearchCmd::REPLACE_ALL)
|
|
 |
f325b2 |
bEndOfSearch = SearchAndReplaceAll ();
|
|
 |
f325b2 |
else
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
@@ -621,11 +621,32 @@ bool Outliner::SearchAndReplaceAll()
|
|
 |
f325b2 |
|
|
 |
f325b2 |
// Search/replace until the end of the document is reached.
|
|
 |
f325b2 |
bool bFoundMatch;
|
|
 |
f325b2 |
+ std::vector<OString> aSelections;
|
|
 |
f325b2 |
do
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
- bFoundMatch = ! SearchAndReplaceOnce();
|
|
 |
f325b2 |
+ bFoundMatch = ! SearchAndReplaceOnce(&aSelections);
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
while (bFoundMatch);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ if (mpSearchItem->GetCommand() == SvxSearchCmd::FIND_ALL && pViewShell->GetDoc()->isTiledRendering() && !aSelections.empty())
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ boost::property_tree::ptree aTree;
|
|
 |
f325b2 |
+ aTree.put("searchString", mpSearchItem->GetSearchString().toUtf8().getStr());
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ boost::property_tree::ptree aChildren;
|
|
 |
f325b2 |
+ for (const OString& rSelection : aSelections)
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ boost::property_tree::ptree aChild;
|
|
 |
f325b2 |
+ aChild.put("", rSelection.getStr());
|
|
 |
f325b2 |
+ aChildren.push_back(std::make_pair("", aChild));
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+ aTree.add_child("searchResultSelection", aChildren);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ std::stringstream aStream;
|
|
 |
f325b2 |
+ boost::property_tree::write_json(aStream, aTree);
|
|
 |
f325b2 |
+ OString aPayload = aStream.str().c_str();
|
|
 |
f325b2 |
+ pViewShell->GetDoc()->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
RestoreStartPosition ();
|
|
 |
f325b2 |
@@ -634,7 +655,7 @@ bool Outliner::SearchAndReplaceAll()
|
|
 |
f325b2 |
return true;
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
-bool Outliner::SearchAndReplaceOnce()
|
|
 |
f325b2 |
+bool Outliner::SearchAndReplaceOnce(std::vector<OString>* pSelections)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
DetectChange ();
|
|
 |
f325b2 |
|
|
 |
f325b2 |
@@ -724,30 +745,38 @@ bool Outliner::SearchAndReplaceOnce()
|
|
 |
f325b2 |
|
|
 |
f325b2 |
if (pViewShell && pViewShell->GetDoc()->isTiledRendering() && mbStringFound)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
- // notify LibreOfficeKit about changed page
|
|
 |
f325b2 |
- OString aPayload = OString::number(maCurrentPosition.mnPageIndex);
|
|
 |
f325b2 |
- pViewShell->GetDoc()->libreOfficeKitCallback(LOK_CALLBACK_SET_PART, aPayload.getStr());
|
|
 |
f325b2 |
-
|
|
 |
f325b2 |
- // also about search result selections
|
|
 |
f325b2 |
std::vector<Rectangle> aLogicRects;
|
|
 |
f325b2 |
pOutlinerView->GetSelectionRectangles(aLogicRects);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
- boost::property_tree::ptree aTree;
|
|
 |
f325b2 |
- aTree.put("searchString", mpSearchItem->GetSearchString().toUtf8().getStr());
|
|
 |
f325b2 |
-
|
|
 |
f325b2 |
std::vector<OString> aLogicRectStrings;
|
|
 |
f325b2 |
std::transform(aLogicRects.begin(), aLogicRects.end(), std::back_inserter(aLogicRectStrings), [](const Rectangle& rRectangle) { return rRectangle.toString(); });
|
|
 |
f325b2 |
OString sRectangles = comphelper::string::join("; ", aLogicRectStrings);
|
|
 |
f325b2 |
- boost::property_tree::ptree aChildren;
|
|
 |
f325b2 |
- boost::property_tree::ptree aChild;
|
|
 |
f325b2 |
- aChild.put("", sRectangles.getStr());
|
|
 |
f325b2 |
- aChildren.push_back(std::make_pair("", aChild));
|
|
 |
f325b2 |
- aTree.add_child("searchResultSelection", aChildren);
|
|
 |
f325b2 |
-
|
|
 |
f325b2 |
- std::stringstream aStream;
|
|
 |
f325b2 |
- boost::property_tree::write_json(aStream, aTree);
|
|
 |
f325b2 |
- aPayload = aStream.str().c_str();
|
|
 |
f325b2 |
- pViewShell->GetDoc()->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ if (!pSelections)
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ // notify LibreOfficeKit about changed page
|
|
 |
f325b2 |
+ OString aPayload = OString::number(maCurrentPosition.mnPageIndex);
|
|
 |
f325b2 |
+ pViewShell->GetDoc()->libreOfficeKitCallback(LOK_CALLBACK_SET_PART, aPayload.getStr());
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ // also about search result selections
|
|
 |
f325b2 |
+ boost::property_tree::ptree aTree;
|
|
 |
f325b2 |
+ aTree.put("searchString", mpSearchItem->GetSearchString().toUtf8().getStr());
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ boost::property_tree::ptree aChildren;
|
|
 |
f325b2 |
+ boost::property_tree::ptree aChild;
|
|
 |
f325b2 |
+ aChild.put("", sRectangles.getStr());
|
|
 |
f325b2 |
+ aChildren.push_back(std::make_pair("", aChild));
|
|
 |
f325b2 |
+ aTree.add_child("searchResultSelection", aChildren);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ std::stringstream aStream;
|
|
 |
f325b2 |
+ boost::property_tree::write_json(aStream, aTree);
|
|
 |
f325b2 |
+ aPayload = aStream.str().c_str();
|
|
 |
f325b2 |
+ pViewShell->GetDoc()->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+ else
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ pSelections->push_back(sRectangles);
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
return mbEndOfSearch;
|
|
 |
f325b2 |
--
|
|
 |
f325b2 |
2.12.0
|
|
 |
f325b2 |
|