diff options
author | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-09-19 19:09:19 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-09-19 19:56:16 -0400 |
commit | 0783e78de2ce265e19b739effbff80c37ee98576 (patch) | |
tree | e3f9b3c9c04db7f582a08889bf29353383a3f68f /sc/inc | |
parent | 5660bc7573f3529ae25d54867249045bb65d536b (diff) |
Let's avoid modifying the selection data during search and replace.
The previous code was modifying the selection data (ScMarkData) in
a not-so-obvious fashion during the search and/or replace. Let's only
modify selection in the view code to avoid surprises. The document
model shouldn't be modifying the view model.
Those methods that were taking a reference to ScMarkData now take a
const reference instead.
Diffstat (limited to 'sc/inc')
-rw-r--r-- | sc/inc/document.hxx | 8 | ||||
-rw-r--r-- | sc/inc/table.hxx | 41 |
2 files changed, 26 insertions, 23 deletions
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index 77439d10a503..ca9806385e6c 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -1260,10 +1260,10 @@ public: sal_uInt16 nFormatNo, const ScMarkData& rMark ); void GetAutoFormatData( SCTAB nTab, SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, ScAutoFormatData& rData ); - sal_Bool SearchAndReplace( const SvxSearchItem& rSearchItem, - SCCOL& rCol, SCROW& rRow, SCTAB& rTab, - ScMarkData& rMark, - String& rUndoStr, ScDocument* pUndoDoc = NULL ); + bool SearchAndReplace( const SvxSearchItem& rSearchItem, + SCCOL& rCol, SCROW& rRow, SCTAB& rTab, + const ScMarkData& rMark, ScRangeList& rMatchedRanges, + rtl::OUString& rUndoStr, ScDocument* pUndoDoc = NULL ); // determine Col/Row of subsequent calls // (e.g. not found from the beginning, or subsequent tables) diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx index 347b9cc450fe..9cd3c573a072 100644 --- a/sc/inc/table.hxx +++ b/sc/inc/table.hxx @@ -498,9 +498,9 @@ public: sal_uInt16 nFormatNo ); void GetAutoFormatData(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, ScAutoFormatData& rData); void ScReplaceTabsStr( String& rStr, const String& rSrch, const String& rRepl ); // from sw - bool SearchAndReplace(const SvxSearchItem& rSearchItem, - SCCOL& rCol, SCROW& rRow, ScMarkData& rMark, - String& rUndoStr, ScDocument* pUndoDoc); + bool SearchAndReplace( + const SvxSearchItem& rSearchItem, SCCOL& rCol, SCROW& rRow, const ScMarkData& rMark, + ScRangeList& rMatchedRanges, rtl::OUString& rUndoStr, ScDocument* pUndoDoc); void FindMaxRotCol( RowInfo* pRowInfo, SCSIZE nArrCount, SCCOL nX1, SCCOL nX2 ); @@ -819,33 +819,36 @@ private: void GetAutoFormatAttr(SCCOL nCol, SCROW nRow, sal_uInt16 nIndex, ScAutoFormatData& rData); void GetAutoFormatFrame(SCCOL nCol, SCROW nRow, sal_uInt16 nFlags, sal_uInt16 nIndex, ScAutoFormatData& rData); bool SearchCell(const SvxSearchItem& rSearchItem, SCCOL nCol, SCROW nRow, - const ScMarkData& rMark, String& rUndoStr, ScDocument* pUndoDoc); + const ScMarkData& rMark, rtl::OUString& rUndoStr, ScDocument* pUndoDoc); bool Search(const SvxSearchItem& rSearchItem, SCCOL& rCol, SCROW& rRow, - const ScMarkData& rMark, String& rUndoStr, ScDocument* pUndoDoc); - bool SearchAll(const SvxSearchItem& rSearchItem, ScMarkData& rMark, - String& rUndoStr, ScDocument* pUndoDoc); + const ScMarkData& rMark, rtl::OUString& rUndoStr, ScDocument* pUndoDoc); + bool SearchAll(const SvxSearchItem& rSearchItem, const ScMarkData& rMark, + ScRangeList& rMatchedRanges, rtl::OUString& rUndoStr, ScDocument* pUndoDoc); bool Replace(const SvxSearchItem& rSearchItem, SCCOL& rCol, SCROW& rRow, - const ScMarkData& rMark, String& rUndoStr, ScDocument* pUndoDoc); - bool ReplaceAll(const SvxSearchItem& rSearchItem, ScMarkData& rMark, - String& rUndoStr, ScDocument* pUndoDoc); + const ScMarkData& rMark, rtl::OUString& rUndoStr, ScDocument* pUndoDoc); + bool ReplaceAll( + const SvxSearchItem& rSearchItem, const ScMarkData& rMark, ScRangeList& rMatchedRanges, + rtl::OUString& rUndoStr, ScDocument* pUndoDoc); bool SearchStyle(const SvxSearchItem& rSearchItem, SCCOL& rCol, SCROW& rRow, const ScMarkData& rMark); bool ReplaceStyle(const SvxSearchItem& rSearchItem, SCCOL& rCol, SCROW& rRow, const ScMarkData& rMark, bool bIsUndo); - bool SearchAllStyle(const SvxSearchItem& rSearchItem, ScMarkData& rMark); - bool ReplaceAllStyle(const SvxSearchItem& rSearchItem, ScMarkData& rMark, - ScDocument* pUndoDoc); + bool SearchAllStyle( + const SvxSearchItem& rSearchItem, const ScMarkData& rMark, ScRangeList& rMatchedRanges); + bool ReplaceAllStyle( + const SvxSearchItem& rSearchItem, const ScMarkData& rMark, ScRangeList& rMatchedRanges, + ScDocument* pUndoDoc); bool SearchAndReplaceEmptyCells( const SvxSearchItem& rSearchItem, - SCCOL& rCol, SCROW& rRow, ScMarkData& rMark, - String& rUndoStr, ScDocument* pUndoDoc); + SCCOL& rCol, SCROW& rRow, const ScMarkData& rMark, ScRangeList& rMatchedRanges, + rtl::OUString& rUndoStr, ScDocument* pUndoDoc); bool SearchRangeForEmptyCell(const ScRange& rRange, const SvxSearchItem& rSearchItem, SCCOL& rCol, SCROW& rRow, - String& rUndoStr, ScDocument* pUndoDoc); - bool SearchRangeForAllEmptyCells(const ScRange& rRange, - const SvxSearchItem& rSearchItem, ScMarkData& rMark, - String& rUndoStr, ScDocument* pUndoDoc); + rtl::OUString& rUndoStr); + bool SearchRangeForAllEmptyCells( + const ScRange& rRange, const SvxSearchItem& rSearchItem, + ScRangeList& rMatchedRanges, rtl::OUString& rUndoStr, ScDocument* pUndoDoc); // use the global sort parameter: bool IsSorted(SCCOLROW nStart, SCCOLROW nEnd); |