[Libreoffice-commits] core.git: 2 commits - include/sfx2 include/svl sfx2/sdi svl/source sw/qa sw/source

Jan Holesovsky kendy at collabora.com
Thu Mar 17 17:11:17 UTC 2016


 include/sfx2/msg.hxx                           |    2 +-
 include/svl/memberid.hrc                       |    1 -
 include/svl/srchitem.hxx                       |    4 ----
 sfx2/sdi/sfxitems.sdi                          |    1 -
 svl/source/items/srchitem.cxx                  |   16 ++--------------
 sw/qa/extras/tiledrendering/tiledrendering.cxx |    3 +--
 sw/source/core/crsr/findtxt.cxx                |   14 +++++---------
 7 files changed, 9 insertions(+), 32 deletions(-)

New commits:
commit 8d754e8609f918c2c08a6c6b91a8e12b99efba52
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Thu Mar 17 15:51:42 2016 +0100

    tdf#98458 sw: Fix performance problem when searching in large documents.
    
    Change-Id: I0056a411d7a3bb018401d87bdd4a0112fed31df6

diff --git a/sw/source/core/crsr/findtxt.cxx b/sw/source/core/crsr/findtxt.cxx
index 1a8924c..0011605 100644
--- a/sw/source/core/crsr/findtxt.cxx
+++ b/sw/source/core/crsr/findtxt.cxx
@@ -244,6 +244,10 @@ bool SwPaM::Find( const SearchOptions2& rSearchOpt, bool bSearchInNotes , utl::T
                           rSearchOpt.searchString == "$^" );
     const bool bChkParaEnd = bRegSearch && rSearchOpt.searchString == "$";
 
+    SvxSearchItem aSearchItem(SID_SEARCH_ITEM); // this is a very expensive operation (calling configmgr etc.)
+    aSearchItem.SetSearchOptions(rSearchOpt);
+    aSearchItem.SetBackward(!bSrchForward);
+
     // LanguageType eLastLang = 0;
     while( nullptr != ( pNode = ::GetNode( *pPam, bFirst, fnMove, bInReadOnly ) ))
     {
@@ -301,10 +305,6 @@ bool SwPaM::Find( const SearchOptions2& rSearchOpt, bool bSearchInNotes , utl::T
             SwWrtShell *const pWrtShell = (pDocShell) ? pDocShell->GetWrtShell() : nullptr;
             SwPostItMgr *const pPostItMgr = (pWrtShell) ? pWrtShell->GetPostItMgr() : nullptr;
 
-            SvxSearchItem aSearchItem(SID_SEARCH_ITEM);
-            aSearchItem.SetSearchOptions(rSearchOpt);
-            aSearchItem.SetBackward(!bSrchForward);
-
             // If there is an active text edit, then search there.
             bool bEndedTextEdit = false;
             SdrView* pSdrView = pWrtShell->GetDrawView();
commit 43c64fa24d3d9922b080b5cb7bb5df249a759c1a
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Thu Mar 17 15:43:32 2016 +0100

    Revert "tdf#98458 sw: make search in shape text optional"
    
    Actually there seems to be a simpler solution to the immediate performance
    problem which I'll commit next.
    
    It still might be necessary to introduce the search switch at some stage, but
    first let's see if there are complaints.
    
    This reverts commit 8e0b08c3053ed5472409b1ea7e02653aad38f7d6.

diff --git a/include/sfx2/msg.hxx b/include/sfx2/msg.hxx
index 03972d5..6753181 100644
--- a/include/sfx2/msg.hxx
+++ b/include/sfx2/msg.hxx
@@ -146,7 +146,7 @@ SFX_DECL_TYPE(13); // for SwAddPrinterItem, Sd...
 SFX_DECL_TYPE(14);
 SFX_DECL_TYPE(16); // for SwDocDisplayItem
 SFX_DECL_TYPE(17); // for SvxAddressItem
-SFX_DECL_TYPE(24); // for SvxSearchItem
+SFX_DECL_TYPE(23); // for SvxSearchItem
 
 // all SfxTypes must be in this header
 #undef SFX_DECL_TYPE
diff --git a/include/svl/memberid.hrc b/include/svl/memberid.hrc
index fb467b3..b5a2262 100644
--- a/include/svl/memberid.hrc
+++ b/include/svl/memberid.hrc
@@ -61,7 +61,6 @@
 #define MID_SEARCH_STARTPOINTY          21
 #define MID_SEARCH_SEARCHFORMATTED      22
 #define MID_SEARCH_ALGORITHMTYPE2       23
-#define MID_SEARCH_INSHAPES             24
 
 #endif
 
diff --git a/include/svl/srchitem.hxx b/include/svl/srchitem.hxx
index d67fff8..472f1ac 100644
--- a/include/svl/srchitem.hxx
+++ b/include/svl/srchitem.hxx
@@ -90,9 +90,6 @@ class SVL_DLLPUBLIC SvxSearchItem :
     sal_Int32       m_nStartPointX;
     sal_Int32       m_nStartPointY;
 
-    /// Writer-specific: search in shape text.
-    bool            m_bSearchInShapes;
-
     virtual void    ImplCommit() override;
 
 public:
@@ -201,7 +198,6 @@ public:
     sal_Int32 GetStartPointY() const;
     /// Either x or y start point is set.
     bool HasStartPoint() const;
-    bool IsSearchInShapes() const;
 };
 
 const OUString& SvxSearchItem::GetSearchString() const
diff --git a/sfx2/sdi/sfxitems.sdi b/sfx2/sdi/sfxitems.sdi
index 1900868..ab1b3fd 100644
--- a/sfx2/sdi/sfxitems.sdi
+++ b/sfx2/sdi/sfxitems.sdi
@@ -91,7 +91,6 @@
         INT32       SearchStartPointY MID_SEARCH_STARTPOINTY;
         BOOL        SearchFormatted MID_SEARCH_SEARCHFORMATTED;
         INT16       AlgorithmType2  MID_SEARCH_ALGORITHMTYPE2;
-        BOOL        SearchInShapes  MID_SEARCH_INSHAPES;
     };
     item SvxSearch SvxSearchItem;
 
diff --git a/svl/source/items/srchitem.cxx b/svl/source/items/srchitem.cxx
index 752a888..881c464 100644
--- a/svl/source/items/srchitem.cxx
+++ b/svl/source/items/srchitem.cxx
@@ -127,8 +127,7 @@ SvxSearchItem::SvxSearchItem( const sal_uInt16 nId ) :
     m_bContent        ( false ),
     m_bAsianOptions   ( false ),
     m_nStartPointX(0),
-    m_nStartPointY(0),
-    m_bSearchInShapes(false)
+    m_nStartPointY(0)
 {
     EnableNotification( lcl_GetNotifyNames() );
 
@@ -227,8 +226,7 @@ SvxSearchItem::SvxSearchItem( const SvxSearchItem& rItem ) :
     m_bContent        ( rItem.m_bContent ),
     m_bAsianOptions   ( rItem.m_bAsianOptions ),
     m_nStartPointX(rItem.m_nStartPointX),
-    m_nStartPointY(rItem.m_nStartPointY),
-    m_bSearchInShapes(rItem.m_bSearchInShapes)
+    m_nStartPointY(rItem.m_nStartPointY)
 {
     EnableNotification( lcl_GetNotifyNames() );
 }
@@ -672,11 +670,6 @@ bool SvxSearchItem::PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId )
             bRet = (rVal >>= m_nStartPointY);
             break;
         }
-        case MID_SEARCH_INSHAPES:
-        {
-            bRet = (rVal >>= m_bSearchInShapes);
-            break;
-        }
         default:
             OSL_FAIL( "Unknown MemberId" );
     }
@@ -699,9 +692,4 @@ bool SvxSearchItem::HasStartPoint() const
     return m_nStartPointX > 0 || m_nStartPointY > 0;
 }
 
-bool SvxSearchItem::IsSearchInShapes() const
-{
-    return m_bSearchInShapes;
-}
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx
index 62be3e6..cf0afae 100644
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -328,8 +328,7 @@ void lcl_search(bool bBackward)
     uno::Sequence<beans::PropertyValue> aPropertyValues(comphelper::InitPropertySequence(
     {
         {"SearchItem.SearchString", uno::makeAny(OUString("shape"))},
-        {"SearchItem.Backward", uno::makeAny(bBackward)},
-        {"SearchItem.SearchInShapes", uno::makeAny(true)}
+        {"SearchItem.Backward", uno::makeAny(bBackward)}
     }));
     comphelper::dispatchCommand(".uno:ExecuteSearch", aPropertyValues);
 }
diff --git a/sw/source/core/crsr/findtxt.cxx b/sw/source/core/crsr/findtxt.cxx
index 62f4e8c..1a8924c 100644
--- a/sw/source/core/crsr/findtxt.cxx
+++ b/sw/source/core/crsr/findtxt.cxx
@@ -301,10 +301,6 @@ bool SwPaM::Find( const SearchOptions2& rSearchOpt, bool bSearchInNotes , utl::T
             SwWrtShell *const pWrtShell = (pDocShell) ? pDocShell->GetWrtShell() : nullptr;
             SwPostItMgr *const pPostItMgr = (pWrtShell) ? pWrtShell->GetPostItMgr() : nullptr;
 
-            SvxSearchItem* pSearchItem = SwView::GetSearchItem();
-            if (pSearchItem && pSearchItem->IsSearchInShapes())
-            {
-            // Search in shapes only if explicitly requested.
             SvxSearchItem aSearchItem(SID_SEARCH_ITEM);
             aSearchItem.SetSearchOptions(rSearchOpt);
             aSearchItem.SetBackward(!bSrchForward);
@@ -348,6 +344,7 @@ bool SwPaM::Find( const SearchOptions2& rSearchOpt, bool bSearchInNotes , utl::T
             }
 
             // Writer and editeng selections are not supported in parallel.
+            SvxSearchItem* pSearchItem = SwView::GetSearchItem();
             // If we just finished search in shape text, don't attempt to do that again.
             if (!bEndedTextEdit && !(pSearchItem && pSearchItem->GetCommand() == SvxSearchCmd::FIND_ALL))
             {
@@ -378,7 +375,6 @@ bool SwPaM::Find( const SearchOptions2& rSearchOpt, bool bSearchInNotes , utl::T
                     }
                 }
             }
-            }
 
             sal_Int32 aStart = 0;
             // do we need to finish a note?


More information about the Libreoffice-commits mailing list