diff options
author | Noel Power <noel.power@suse.com> | 2013-05-28 17:33:33 +0100 |
---|---|---|
committer | Petr Mladek <pmladek@suse.cz> | 2013-05-31 13:44:45 +0200 |
commit | 51d8dc1db12ec5557ac7efe57b954525eee1e7e8 (patch) | |
tree | 5f7cb06d375dc0397a600802a7cd86ed7b6f99cf | |
parent | 4c8eda8ab5b6dfe4a890f521a077752a8d04584f (diff) |
some Worksheet.Change support
Change-Id: I91203e74d54adba17a20ef7b7d835d9ac49855be
(cherry picked from commit 20d792d6379600df8b56a2735f9dd1cb63967e4d)
-rw-r--r-- | sc/source/ui/vba/vbarange.cxx | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/sc/source/ui/vba/vbarange.cxx b/sc/source/ui/vba/vbarange.cxx index ef1adde41451..c9eb427c116b 100644 --- a/sc/source/ui/vba/vbarange.cxx +++ b/sc/source/ui/vba/vbarange.cxx @@ -1832,6 +1832,7 @@ ScVbaRange::fillSeries( sheet::FillDirection nFillDirection, sheet::FillMode nFi uno::Reference< sheet::XCellSeries > xCellSeries(mxRange, uno::UNO_QUERY_THROW ); xCellSeries->fillSeries( nFillDirection, nFillMode, nFillDateMode, fStep, fEndValue ); + fireChangeEvent(); } void @@ -3094,7 +3095,28 @@ ScVbaRange::Replace( const ::rtl::OUString& What, const ::rtl::OUString& Replace // OOo.org afaik uno::Reference< util::XSearchDescriptor > xSearch( xDescriptor, uno::UNO_QUERY ); + uno::Reference< container::XIndexAccess > xIndexAccess = xReplace->findAll( xSearch ); xReplace->replaceAll( xSearch ); + if ( xIndexAccess.is() && xIndexAccess->getCount() > 0 ) + { + for ( sal_Int32 i = 0; i < xIndexAccess->getCount(); ++i ) + { + uno::Reference< table::XCellRange > xCellRange( xIndexAccess->getByIndex( i ), uno::UNO_QUERY ); + if ( xCellRange.is() ) + { + uno::Reference< excel::XRange > xRange( new ScVbaRange( mxParent, mxContext, xCellRange ) ); + uno::Reference< container::XEnumerationAccess > xEnumAccess( xRange, uno::UNO_QUERY_THROW ); + uno::Reference< container::XEnumeration > xEnum = xEnumAccess->createEnumeration(); + while ( xEnum->hasMoreElements() ) + { + uno::Reference< excel::XRange > xNextRange( xEnum->nextElement(), uno::UNO_QUERY_THROW ); + ScVbaRange* pRange = dynamic_cast< ScVbaRange * > ( xNextRange.get() ); + if ( pRange ) + pRange->fireChangeEvent(); + } + } + } + } } return sal_True; // always } |