summaryrefslogtreecommitdiff
path: root/sc/inc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2011-09-19 19:09:19 -0400
committerKohei Yoshida <kohei.yoshida@suse.com>2011-09-19 19:56:16 -0400
commit0783e78de2ce265e19b739effbff80c37ee98576 (patch)
treee3f9b3c9c04db7f582a08889bf29353383a3f68f /sc/inc
parent5660bc7573f3529ae25d54867249045bb65d536b (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.hxx8
-rw-r--r--sc/inc/table.hxx41
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);