summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2016-03-17 08:33:51 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2016-03-17 08:34:21 +0100
commit8e0b08c3053ed5472409b1ea7e02653aad38f7d6 (patch)
tree7f9160cfd5b97efafc3fe00dea9e0f8a10e120d8
parent5b3fee11f4019820cc1212a0441020609418dbf1 (diff)
tdf#98458 sw: make search in shape text optional
Instead of forcing it silently on everyone, add a new search option and enable it only in case it's requested, as shape search is expensive for large documents. (Regression from commit bdc1824ea7acfa2fe9d71cdbe57882acce155577.) Change-Id: Ibb6e76ad5c870dfd63b36429e16ef6d572f5f1fd
-rw-r--r--include/sfx2/msg.hxx2
-rw-r--r--include/svl/memberid.hrc1
-rw-r--r--include/svl/srchitem.hxx4
-rw-r--r--sfx2/sdi/sfxitems.sdi1
-rw-r--r--svl/source/items/srchitem.cxx16
-rw-r--r--sw/qa/extras/tiledrendering/tiledrendering.cxx3
-rw-r--r--sw/source/core/crsr/findtxt.cxx6
7 files changed, 28 insertions, 5 deletions
diff --git a/include/sfx2/msg.hxx b/include/sfx2/msg.hxx
index 6753181644a9..03972d5f27ca 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(23); // for SvxSearchItem
+SFX_DECL_TYPE(24); // 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 b5a2262958e5..fb467b3f22d1 100644
--- a/include/svl/memberid.hrc
+++ b/include/svl/memberid.hrc
@@ -61,6 +61,7 @@
#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 472f1ac3dd61..d67fff89819e 100644
--- a/include/svl/srchitem.hxx
+++ b/include/svl/srchitem.hxx
@@ -90,6 +90,9 @@ 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:
@@ -198,6 +201,7 @@ 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 ab1b3fd067e0..1900868fd0f5 100644
--- a/sfx2/sdi/sfxitems.sdi
+++ b/sfx2/sdi/sfxitems.sdi
@@ -91,6 +91,7 @@
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 881c464ee1f4..752a88881487 100644
--- a/svl/source/items/srchitem.cxx
+++ b/svl/source/items/srchitem.cxx
@@ -127,7 +127,8 @@ SvxSearchItem::SvxSearchItem( const sal_uInt16 nId ) :
m_bContent ( false ),
m_bAsianOptions ( false ),
m_nStartPointX(0),
- m_nStartPointY(0)
+ m_nStartPointY(0),
+ m_bSearchInShapes(false)
{
EnableNotification( lcl_GetNotifyNames() );
@@ -226,7 +227,8 @@ 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_nStartPointY(rItem.m_nStartPointY),
+ m_bSearchInShapes(rItem.m_bSearchInShapes)
{
EnableNotification( lcl_GetNotifyNames() );
}
@@ -670,6 +672,11 @@ 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" );
}
@@ -692,4 +699,9 @@ 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 cf0afae7bf1b..62be3e6b9ea1 100644
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -328,7 +328,8 @@ void lcl_search(bool bBackward)
uno::Sequence<beans::PropertyValue> aPropertyValues(comphelper::InitPropertySequence(
{
{"SearchItem.SearchString", uno::makeAny(OUString("shape"))},
- {"SearchItem.Backward", uno::makeAny(bBackward)}
+ {"SearchItem.Backward", uno::makeAny(bBackward)},
+ {"SearchItem.SearchInShapes", uno::makeAny(true)}
}));
comphelper::dispatchCommand(".uno:ExecuteSearch", aPropertyValues);
}
diff --git a/sw/source/core/crsr/findtxt.cxx b/sw/source/core/crsr/findtxt.cxx
index 1a8924c51ece..62f4e8c351d9 100644
--- a/sw/source/core/crsr/findtxt.cxx
+++ b/sw/source/core/crsr/findtxt.cxx
@@ -301,6 +301,10 @@ 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);
@@ -344,7 +348,6 @@ 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))
{
@@ -375,6 +378,7 @@ bool SwPaM::Find( const SearchOptions2& rSearchOpt, bool bSearchInNotes , utl::T
}
}
}
+ }
sal_Int32 aStart = 0;
// do we need to finish a note?