[Libreoffice-commits] core.git: 2 commits - sw/qa sw/source

Miklos Vajna vmiklos at collabora.co.uk
Tue Oct 6 05:18:42 PDT 2015


 sw/qa/extras/tiledrendering/tiledrendering.cxx |    7 +
 sw/source/uibase/uiview/viewsrch.cxx           |   92 +++++++++++++------------
 2 files changed, 57 insertions(+), 42 deletions(-)

New commits:
commit 58c38e7ea5debc5440f1d81acf38d8d6ad0883d8
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Oct 6 14:17:43 2015 +0200

    sw tiled rendering: emit LOK_CALLBACK_SEARCH_RESULT* for normal search
    
    We used to emit these for find-all only, for no good reason.
    
    Change-Id: Id07dc7649f9a8528b9d4ec16d5f7c651fd607111

diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx
index 2fd27dd..1eb57de 100644
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -342,7 +342,10 @@ void lcl_search(bool bBackward)
 void SwTiledRenderingTest::testSearch()
 {
 #if !defined(WNT) && !defined(MACOSX)
+    comphelper::LibreOfficeKit::setActive();
+
     SwXTextDocument* pXTextDocument = createDoc("search.odt");
+    pXTextDocument->registerCallback(&SwTiledRenderingTest::callback, this);
     SwWrtShell* pWrtShell = pXTextDocument->GetDocShell()->GetWrtShell();
     size_t nNode = pWrtShell->getShellCrsr(false)->Start()->nNode.GetNode().GetIndex();
 
@@ -351,6 +354,8 @@ void SwTiledRenderingTest::testSearch()
     CPPUNIT_ASSERT(!pWrtShell->GetDrawView()->GetTextEditObject());
     size_t nActual = pWrtShell->getShellCrsr(false)->Start()->nNode.GetNode().GetIndex();
     CPPUNIT_ASSERT_EQUAL(nNode + 1, nActual);
+    /// Make sure we get search result selection for normal find as well, not only find all.
+    CPPUNIT_ASSERT(!m_aSearchResultSelection.empty());
 
     // Next hit, in the shape.
     lcl_search(false);
@@ -375,6 +380,8 @@ void SwTiledRenderingTest::testSearch()
     CPPUNIT_ASSERT(!pWrtShell->GetDrawView()->GetTextEditObject());
     nActual = pWrtShell->getShellCrsr(false)->Start()->nNode.GetNode().GetIndex();
     CPPUNIT_ASSERT_EQUAL(nNode + 1, nActual);
+
+    comphelper::LibreOfficeKit::setActive(false);
 #endif
 }
 
diff --git a/sw/source/uibase/uiview/viewsrch.cxx b/sw/source/uibase/uiview/viewsrch.cxx
index 7d34a2a..3427fe4 100644
--- a/sw/source/uibase/uiview/viewsrch.cxx
+++ b/sw/source/uibase/uiview/viewsrch.cxx
@@ -253,7 +253,11 @@ void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
             {
                 bool bRet = SearchAndWrap(bApi);
                 if( bRet )
+                {
                     Scroll(m_pWrtShell->GetCharRect().SVRect());
+                    if (comphelper::LibreOfficeKit::isActive())
+                        lcl_emitSearchResultCallbacks(1, m_pSrchItem, m_pWrtShell);
+                }
                 rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
 #if HAVE_FEATURE_DESKTOP
                 {
commit ca8016c3a317a7ba1f03e117d575fb78a572b4b3
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Oct 6 12:29:33 2015 +0200

    sw: extract lcl_emitSearchResultCallbacks() from SwView::ExecSearch()
    
    Change-Id: I9c6b7540bcae85d6529e5cc195a7e86f58ee5713

diff --git a/sw/source/uibase/uiview/viewsrch.cxx b/sw/source/uibase/uiview/viewsrch.cxx
index 0b07ce5..7d34a2a 100644
--- a/sw/source/uibase/uiview/viewsrch.cxx
+++ b/sw/source/uibase/uiview/viewsrch.cxx
@@ -102,6 +102,51 @@ static void lcl_addContainerToJson(boost::property_tree::ptree& rTree, const OSt
     rTree.add_child(rKey.getStr(), aChildren);
 }
 
+/// Emits LOK callbacks (count, selection) for search results.
+static void lcl_emitSearchResultCallbacks(sal_uInt16 nFound, SvxSearchItem* pSearchItem, SwWrtShell* pWrtShell)
+{
+    OString aPayload = OString::number(nFound) + ";" + pSearchItem->GetSearchString().toUtf8();
+    pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_COUNT, aPayload.getStr());
+
+    // Emit a callback also about the selection rectangles, grouped by matches.
+    if (SwPaM* pPaM = pWrtShell->GetCrsr())
+    {
+        std::vector<OString> aMatches;
+        for (SwPaM& rPaM : pPaM->GetRingContainer())
+        {
+            if (SwShellCrsr* pShellCrsr = dynamic_cast<SwShellCrsr*>(&rPaM))
+            {
+                std::vector<OString> aSelectionRectangles;
+                pShellCrsr->SwSelPaintRects::Show(&aSelectionRectangles);
+                std::stringstream ss;
+                bool bFirst = true;
+                for (size_t i = 0; i < aSelectionRectangles.size(); ++i)
+                {
+                    const OString& rSelectionRectangle = aSelectionRectangles[i];
+                    if (rSelectionRectangle.isEmpty())
+                        continue;
+                    if (bFirst)
+                        bFirst = false;
+                    else
+                        ss << "; ";
+                    ss << rSelectionRectangle.getStr();
+                }
+                OString sRect = ss.str().c_str();
+                aMatches.push_back(sRect);
+            }
+        }
+        boost::property_tree::ptree aTree;
+        aTree.put("searchString", pSearchItem->GetSearchString().toUtf8().getStr());
+        lcl_addContainerToJson(aTree, "searchResultSelection", aMatches);
+
+        std::stringstream aStream;
+        boost::property_tree::write_json(aStream, aTree);
+        aPayload = aStream.str().c_str();
+
+        pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
+    }
+}
+
 void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
 {
     const SfxItemSet* pArgs = rReq.GetArgs();
@@ -241,48 +286,7 @@ void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
                     m_bFound = false;
                 }
                 else if (comphelper::LibreOfficeKit::isActive())
-                {
-                    OString aPayload = OString::number(nFound) + ";" + m_pSrchItem->GetSearchString().toUtf8();
-                    m_pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_COUNT, aPayload.getStr());
-
-                    // Emit a callback also about the selection rectangles, grouped by matches.
-                    if (SwPaM* pPaM = m_pWrtShell->GetCrsr())
-                    {
-                        std::vector<OString> aMatches;
-                        for (SwPaM& rPaM : pPaM->GetRingContainer())
-                        {
-                            if (SwShellCrsr* pShellCrsr = dynamic_cast<SwShellCrsr*>(&rPaM))
-                            {
-                                std::vector<OString> aSelectionRectangles;
-                                pShellCrsr->SwSelPaintRects::Show(&aSelectionRectangles);
-                                std::stringstream ss;
-                                bool bFirst = true;
-                                for (size_t i = 0; i < aSelectionRectangles.size(); ++i)
-                                {
-                                    const OString& rSelectionRectangle = aSelectionRectangles[i];
-                                    if (rSelectionRectangle.isEmpty())
-                                        continue;
-                                    if (bFirst)
-                                        bFirst = false;
-                                    else
-                                        ss << "; ";
-                                    ss << rSelectionRectangle.getStr();
-                                }
-                                OString sRect = ss.str().c_str();
-                                aMatches.push_back(sRect);
-                            }
-                        }
-                        boost::property_tree::ptree aTree;
-                        aTree.put("searchString", m_pSrchItem->GetSearchString().toUtf8().getStr());
-                        lcl_addContainerToJson(aTree, "searchResultSelection", aMatches);
-
-                        std::stringstream aStream;
-                        boost::property_tree::write_json(aStream, aTree);
-                        aPayload = aStream.str().c_str();
-
-                        m_pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
-                    }
-                }
+                    lcl_emitSearchResultCallbacks(nFound, m_pSrchItem, m_pWrtShell);
                 rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
 #if HAVE_FEATURE_DESKTOP
                 {


More information about the Libreoffice-commits mailing list