Blame SOURCES/0185-sw-extract-lcl_emitSearchResultCallbacks-from-SwView.patch

f325b2
From 5a52abcc97428423885cb144e5380e825e082abb Mon Sep 17 00:00:00 2001
f325b2
From: Miklos Vajna <vmiklos@collabora.co.uk>
f325b2
Date: Tue, 6 Oct 2015 12:29:33 +0200
f325b2
Subject: [PATCH 185/398] sw: extract lcl_emitSearchResultCallbacks() from
f325b2
 SwView::ExecSearch()
f325b2
f325b2
Change-Id: I9c6b7540bcae85d6529e5cc195a7e86f58ee5713
f325b2
(cherry picked from commit ca8016c3a317a7ba1f03e117d575fb78a572b4b3)
f325b2
---
f325b2
 sw/source/uibase/uiview/viewsrch.cxx | 88 +++++++++++++++++++-----------------
f325b2
 1 file changed, 46 insertions(+), 42 deletions(-)
f325b2
f325b2
diff --git a/sw/source/uibase/uiview/viewsrch.cxx b/sw/source/uibase/uiview/viewsrch.cxx
f325b2
index 570fadeb561a..a22cbdb6528f 100644
f325b2
--- a/sw/source/uibase/uiview/viewsrch.cxx
f325b2
+++ b/sw/source/uibase/uiview/viewsrch.cxx
f325b2
@@ -102,6 +102,51 @@ static void lcl_addContainerToJson(boost::property_tree::ptree& rTree, const OSt
f325b2
     rTree.add_child(rKey.getStr(), aChildren);
f325b2
 }
f325b2
 
f325b2
+/// Emits LOK callbacks (count, selection) for search results.
f325b2
+static void lcl_emitSearchResultCallbacks(sal_uInt16 nFound, SvxSearchItem* pSearchItem, SwWrtShell* pWrtShell)
f325b2
+{
f325b2
+    OString aPayload = OString::number(nFound) + ";" + pSearchItem->GetSearchString().toUtf8();
f325b2
+    pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_COUNT, aPayload.getStr());
f325b2
+
f325b2
+    // Emit a callback also about the selection rectangles, grouped by matches.
f325b2
+    if (SwPaM* pPaM = pWrtShell->GetCrsr())
f325b2
+    {
f325b2
+        std::vector<OString> aMatches;
f325b2
+        for (SwPaM& rPaM : pPaM->GetRingContainer())
f325b2
+        {
f325b2
+            if (SwShellCrsr* pShellCrsr = dynamic_cast<SwShellCrsr*>(&rPaM))
f325b2
+            {
f325b2
+                std::vector<OString> aSelectionRectangles;
f325b2
+                pShellCrsr->SwSelPaintRects::Show(&aSelectionRectangles);
f325b2
+                std::stringstream ss;
f325b2
+                bool bFirst = true;
f325b2
+                for (size_t i = 0; i < aSelectionRectangles.size(); ++i)
f325b2
+                {
f325b2
+                    const OString& rSelectionRectangle = aSelectionRectangles[i];
f325b2
+                    if (rSelectionRectangle.isEmpty())
f325b2
+                        continue;
f325b2
+                    if (bFirst)
f325b2
+                        bFirst = false;
f325b2
+                    else
f325b2
+                        ss << "; ";
f325b2
+                    ss << rSelectionRectangle.getStr();
f325b2
+                }
f325b2
+                OString sRect = ss.str().c_str();
f325b2
+                aMatches.push_back(sRect);
f325b2
+            }
f325b2
+        }
f325b2
+        boost::property_tree::ptree aTree;
f325b2
+        aTree.put("searchString", pSearchItem->GetSearchString().toUtf8().getStr());
f325b2
+        lcl_addContainerToJson(aTree, "searchResultSelection", aMatches);
f325b2
+
f325b2
+        std::stringstream aStream;
f325b2
+        boost::property_tree::write_json(aStream, aTree);
f325b2
+        aPayload = aStream.str().c_str();
f325b2
+
f325b2
+        pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
f325b2
+    }
f325b2
+}
f325b2
+
f325b2
 void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
f325b2
 {
f325b2
     const SfxItemSet* pArgs = rReq.GetArgs();
f325b2
@@ -241,48 +286,7 @@ void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
f325b2
                     m_bFound = false;
f325b2
                 }
f325b2
                 else if (comphelper::LibreOfficeKit::isActive())
f325b2
-                {
f325b2
-                    OString aPayload = OString::number(nFound) + ";" + m_pSrchItem->GetSearchString().toUtf8();
f325b2
-                    m_pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_COUNT, aPayload.getStr());
f325b2
-
f325b2
-                    // Emit a callback also about the selection rectangles, grouped by matches.
f325b2
-                    if (SwPaM* pPaM = m_pWrtShell->GetCrsr())
f325b2
-                    {
f325b2
-                        std::vector<OString> aMatches;
f325b2
-                        for (SwPaM& rPaM : pPaM->GetRingContainer())
f325b2
-                        {
f325b2
-                            if (SwShellCrsr* pShellCrsr = dynamic_cast<SwShellCrsr*>(&rPaM))
f325b2
-                            {
f325b2
-                                std::vector<OString> aSelectionRectangles;
f325b2
-                                pShellCrsr->SwSelPaintRects::Show(&aSelectionRectangles);
f325b2
-                                std::stringstream ss;
f325b2
-                                bool bFirst = true;
f325b2
-                                for (size_t i = 0; i < aSelectionRectangles.size(); ++i)
f325b2
-                                {
f325b2
-                                    const OString& rSelectionRectangle = aSelectionRectangles[i];
f325b2
-                                    if (rSelectionRectangle.isEmpty())
f325b2
-                                        continue;
f325b2
-                                    if (bFirst)
f325b2
-                                        bFirst = false;
f325b2
-                                    else
f325b2
-                                        ss << "; ";
f325b2
-                                    ss << rSelectionRectangle.getStr();
f325b2
-                                }
f325b2
-                                OString sRect = ss.str().c_str();
f325b2
-                                aMatches.push_back(sRect);
f325b2
-                            }
f325b2
-                        }
f325b2
-                        boost::property_tree::ptree aTree;
f325b2
-                        aTree.put("searchString", m_pSrchItem->GetSearchString().toUtf8().getStr());
f325b2
-                        lcl_addContainerToJson(aTree, "searchResultSelection", aMatches);
f325b2
-
f325b2
-                        std::stringstream aStream;
f325b2
-                        boost::property_tree::write_json(aStream, aTree);
f325b2
-                        aPayload = aStream.str().c_str();
f325b2
-
f325b2
-                        m_pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
f325b2
-                    }
f325b2
-                }
f325b2
+                    lcl_emitSearchResultCallbacks(nFound, m_pSrchItem, m_pWrtShell);
f325b2
                 rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
f325b2
 #if HAVE_FEATURE_DESKTOP
f325b2
                 {
f325b2
-- 
f325b2
2.12.0
f325b2