diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-01-20 14:37:39 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-01-23 07:56:34 +0200 |
commit | a232712f39ab6bc91f9f531d0861dd2096998c79 (patch) | |
tree | 8e95417aa3e6eea21010030908d8e4b354237c2d /sc | |
parent | 8abcd0c38707a61fe5175840f19c2d0a9f8825ee (diff) |
use rtl::Reference in ScSelectionTransferObj
instead of manual acquire/release
Change-Id: I056fc3767f2e7b3ffacdd930e9a8e3b71c32620e
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/app/seltrans.cxx | 42 | ||||
-rw-r--r-- | sc/source/ui/inc/seltrans.hxx | 9 |
2 files changed, 20 insertions, 31 deletions
diff --git a/sc/source/ui/app/seltrans.cxx b/sc/source/ui/app/seltrans.cxx index 6b7eee257a08..08a42296a749 100644 --- a/sc/source/ui/app/seltrans.cxx +++ b/sc/source/ui/app/seltrans.cxx @@ -141,9 +141,7 @@ ScSelectionTransferObj* ScSelectionTransferObj::CreateFromView( ScTabView* pView ScSelectionTransferObj::ScSelectionTransferObj( ScTabView* pSource, ScSelectionTransferMode eNewMode ) : pView( pSource ), - eMode( eNewMode ), - pCellData( nullptr ), - pDrawData( nullptr ) + eMode( eNewMode ) { //! store range for StillValid } @@ -168,16 +166,8 @@ void ScSelectionTransferObj::ForgetView() pView = nullptr; eMode = SC_SELTRANS_INVALID; - if (pCellData) - { - pCellData->release(); - pCellData = nullptr; - } - if (pDrawData) - { - pDrawData->release(); - pDrawData = nullptr; - } + mxCellData.clear(); + mxDrawData.clear(); } void ScSelectionTransferObj::AddSupportedFormats() @@ -258,7 +248,7 @@ void ScSelectionTransferObj::AddSupportedFormats() void ScSelectionTransferObj::CreateCellData() { - OSL_ENSURE( !pCellData, "CreateCellData twice" ); + OSL_ENSURE( !mxCellData.is(), "CreateCellData twice" ); if ( pView ) { ScViewData& rViewData = pView->GetViewData(); @@ -306,19 +296,18 @@ void ScSelectionTransferObj::CreateCellData() pTransferObj->SetDragSource( pDocSh, aNewMark ); - pCellData = pTransferObj; - pCellData->acquire(); // keep ref count up - released in ForgetView + mxCellData = pTransferObj; } else delete pClipDoc; } } - OSL_ENSURE( pCellData, "can't create CellData" ); + OSL_ENSURE( mxCellData.is(), "can't create CellData" ); } void ScSelectionTransferObj::CreateDrawData() { - OSL_ENSURE( !pDrawData, "CreateDrawData twice" ); + OSL_ENSURE( !mxDrawData.is(), "CreateDrawData twice" ); if ( pView ) { // similar to ScDrawView::BeginDrag @@ -356,27 +345,26 @@ void ScSelectionTransferObj::CreateDrawData() pTransferObj->SetDrawPersist( aPersistRef ); // keep persist for ole objects alive pTransferObj->SetDragSource( pDrawView ); // copies selection - pDrawData = pTransferObj; - pDrawData->acquire(); // keep ref count up - released in ForgetView + mxDrawData = pTransferObj; } } - OSL_ENSURE( pDrawData, "can't create DrawData" ); + OSL_ENSURE( mxDrawData.is(), "can't create DrawData" ); } ScTransferObj* ScSelectionTransferObj::GetCellData() { - if ( !pCellData && ( eMode == SC_SELTRANS_CELL || eMode == SC_SELTRANS_CELLS ) ) + if ( !mxCellData.is() && ( eMode == SC_SELTRANS_CELL || eMode == SC_SELTRANS_CELLS ) ) CreateCellData(); - return pCellData; + return mxCellData.get(); } ScDrawTransferObj* ScSelectionTransferObj::GetDrawData() { - if ( !pDrawData && ( eMode == SC_SELTRANS_DRAW_BITMAP || eMode == SC_SELTRANS_DRAW_GRAPHIC || - eMode == SC_SELTRANS_DRAW_BOOKMARK || eMode == SC_SELTRANS_DRAW_OLE || - eMode == SC_SELTRANS_DRAW_OTHER ) ) + if ( !mxDrawData.is() && ( eMode == SC_SELTRANS_DRAW_BITMAP || eMode == SC_SELTRANS_DRAW_GRAPHIC || + eMode == SC_SELTRANS_DRAW_BOOKMARK || eMode == SC_SELTRANS_DRAW_OLE || + eMode == SC_SELTRANS_DRAW_OTHER ) ) CreateDrawData(); - return pDrawData; + return mxDrawData.get(); } bool ScSelectionTransferObj::GetData( diff --git a/sc/source/ui/inc/seltrans.hxx b/sc/source/ui/inc/seltrans.hxx index 438818b28f61..cb757fbd6d14 100644 --- a/sc/source/ui/inc/seltrans.hxx +++ b/sc/source/ui/inc/seltrans.hxx @@ -21,6 +21,7 @@ #define INCLUDED_SC_SOURCE_UI_INC_SELTRANS_HXX #include <svtools/transfer.hxx> +#include <rtl/ref.hxx> class ScTabView; class ScTransferObj; @@ -41,10 +42,10 @@ enum ScSelectionTransferMode class ScSelectionTransferObj : public TransferableHelper { private: - ScTabView* pView; - ScSelectionTransferMode eMode; - ScTransferObj* pCellData; - ScDrawTransferObj* pDrawData; + ScTabView* pView; + ScSelectionTransferMode eMode; + rtl::Reference<ScTransferObj> mxCellData; + rtl::Reference<ScDrawTransferObj> mxDrawData; ScSelectionTransferObj( ScTabView* pSource, ScSelectionTransferMode eNewMode ); void CreateCellData(); |