summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2017-01-20 14:37:39 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-01-23 07:56:34 +0200
commita232712f39ab6bc91f9f531d0861dd2096998c79 (patch)
tree8e95417aa3e6eea21010030908d8e4b354237c2d /sc
parent8abcd0c38707a61fe5175840f19c2d0a9f8825ee (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.cxx42
-rw-r--r--sc/source/ui/inc/seltrans.hxx9
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();