summaryrefslogtreecommitdiff
path: root/svtools/source/brwbox/brwbox1.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/source/brwbox/brwbox1.cxx')
-rw-r--r--svtools/source/brwbox/brwbox1.cxx79
1 files changed, 41 insertions, 38 deletions
diff --git a/svtools/source/brwbox/brwbox1.cxx b/svtools/source/brwbox/brwbox1.cxx
index 4f87dfd563d5..04664e5e4b4a 100644
--- a/svtools/source/brwbox/brwbox1.cxx
+++ b/svtools/source/brwbox/brwbox1.cxx
@@ -36,7 +36,7 @@
#define SCROLL_FLAGS (SCROLL_CLIP | SCROLL_NOCHILDREN)
-#define getDataWindow() (static_cast<BrowserDataWin*>(pDataWin))
+#define getDataWindow() (static_cast<BrowserDataWin*>(pDataWin.get()))
using namespace com::sun::star::accessibility::AccessibleEventId;
using namespace com::sun::star::accessibility::AccessibleTableModelChangeType;
@@ -58,8 +58,6 @@ namespace
}
}
-
-
void BrowseBox::ConstructImpl( BrowserMode nMode )
{
OSL_TRACE( "BrowseBox: %p->ConstructImpl", this );
@@ -68,7 +66,7 @@ void BrowseBox::ConstructImpl( BrowserMode nMode )
pDataWin = 0;
pVScroll = 0;
- pDataWin = new BrowserDataWin( this );
+ pDataWin = VclPtr<BrowserDataWin>::Create( this ).get();
pCols = new BrowserColumns;
m_pImpl.reset( new ::svt::BrowseBoxImpl() );
@@ -101,9 +99,9 @@ void BrowseBox::ConstructImpl( BrowserMode nMode )
nControlAreaWidth = USHRT_MAX;
uRow.nSel = BROWSER_ENDOFSELECTION;
- aHScroll.SetLineSize(1);
- aHScroll.SetScrollHdl( LINK( this, BrowseBox, ScrollHdl ) );
- aHScroll.SetEndScrollHdl( LINK( this, BrowseBox, EndScrollHdl ) );
+ aHScroll->SetLineSize(1);
+ aHScroll->SetScrollHdl( LINK( this, BrowseBox, ScrollHdl ) );
+ aHScroll->SetEndScrollHdl( LINK( this, BrowseBox, EndScrollHdl ) );
pDataWin->Show();
SetMode( nMode );
@@ -119,7 +117,7 @@ BrowseBox::BrowseBox( vcl::Window* pParent, WinBits nBits, BrowserMode nMode )
:Control( pParent, nBits | WB_3DLOOK )
,DragSourceHelper( this )
,DropTargetHelper( this )
- ,aHScroll( this, WinBits( WB_HSCROLL ) )
+ ,aHScroll( VclPtr<ScrollBar>::Create(this, WinBits( WB_HSCROLL )) )
{
ConstructImpl( nMode );
}
@@ -130,7 +128,7 @@ BrowseBox::BrowseBox( vcl::Window* pParent, const ResId& rId, BrowserMode nMode
:Control( pParent, rId )
,DragSourceHelper( this )
,DropTargetHelper( this )
- ,aHScroll( this, WinBits(WB_HSCROLL) )
+ ,aHScroll( VclPtr<ScrollBar>::Create(this, WinBits(WB_HSCROLL)) )
{
ConstructImpl(nMode);
}
@@ -138,6 +136,11 @@ BrowseBox::BrowseBox( vcl::Window* pParent, const ResId& rId, BrowserMode nMode
BrowseBox::~BrowseBox()
{
+ disposeOnce();
+}
+
+void BrowseBox::dispose()
+{
OSL_TRACE( "BrowseBox: %p~", this );
if ( m_pImpl->m_pAccessible )
@@ -148,10 +151,11 @@ BrowseBox::~BrowseBox()
}
Hide();
- delete getDataWindow()->pHeaderBar;
- delete getDataWindow()->pCornerWin;
- delete pDataWin;
- delete pVScroll;
+ getDataWindow()->pHeaderBar.disposeAndClear();
+ getDataWindow()->pCornerWin.disposeAndClear();
+ pDataWin.disposeAndClear();
+ pVScroll.disposeAndClear();
+ aHScroll.disposeAndClear();
// free columns-space
for ( size_t i = 0, n = pCols->size(); i < n; ++i )
@@ -161,6 +165,7 @@ BrowseBox::~BrowseBox()
delete pColSel;
if ( bMultiSelection )
delete uRow.pSel;
+ Control::dispose();
}
@@ -589,7 +594,7 @@ void BrowseBox::SetColumnWidth( sal_uInt16 nItemId, sal_uLong nWidth )
nMaxWidth -= getDataWindow()->bAutoSizeLastCol
? GetFieldRect(nItemId).Left()
: GetFrozenWidth();
- if ( static_cast<BrowserDataWin*>(pDataWin )->bAutoSizeLastCol || nWidth > (sal_uLong)nMaxWidth )
+ if ( static_cast<BrowserDataWin*>( pDataWin.get() )->bAutoSizeLastCol || nWidth > (sal_uLong)nMaxWidth )
{
nWidth = nMaxWidth > 16 ? nMaxWidth : nOldWidth;
nWidth = QueryColumnResize( nItemId, nWidth );
@@ -645,7 +650,7 @@ void BrowseBox::SetColumnWidth( sal_uInt16 nItemId, sal_uLong nWidth )
getDataWindow()->Scroll( nWidth-nOldWidth, 0, aScrRect, SCROLL_FLAGS );
Rectangle aInvRect( nX, 0, nX + std::max( nWidth, (sal_uLong)nOldWidth ), USHRT_MAX );
Control::Invalidate( aInvRect, INVALIDATE_NOCHILDREN );
- static_cast<BrowserDataWin*>( pDataWin )->Invalidate( aInvRect );
+ static_cast<BrowserDataWin*>( pDataWin.get() )->Invalidate( aInvRect );
}
else
{
@@ -774,7 +779,6 @@ void BrowseBox::RemoveColumn( sal_uInt16 nItemId )
void BrowseBox::RemoveColumns()
{
-
size_t nOldCount = pCols->size();
// remove all columns
@@ -917,7 +921,7 @@ long BrowseBox::ScrollColumns( long nCols )
{
// update internal value and scrollbar
++nFirstCol;
- aHScroll.SetThumbPos( nFirstCol - FrozenColCount() );
+ aHScroll->SetThumbPos( nFirstCol - FrozenColCount() );
if ( !bScrollable )
{
@@ -963,7 +967,7 @@ long BrowseBox::ScrollColumns( long nCols )
else if ( nCols == -1 )
{
--nFirstCol;
- aHScroll.SetThumbPos( nFirstCol - FrozenColCount() );
+ aHScroll->SetThumbPos( nFirstCol - FrozenColCount() );
if ( !bScrollable )
{
@@ -1003,7 +1007,7 @@ long BrowseBox::ScrollColumns( long nCols )
}
nFirstCol = nFirstCol + (sal_uInt16)nCols;
- aHScroll.SetThumbPos( nFirstCol - FrozenColCount() );
+ aHScroll->SetThumbPos( nFirstCol - FrozenColCount() );
}
// adjust external headerbar, if necessary
@@ -1141,7 +1145,7 @@ void BrowseBox::Clear()
// nFirstCol may not be reset, else the scrolling code will become confused.
// nFirstCol may only be changed when adding or deleting columns
// nFirstCol = 0; -> wrong!
- aHScroll.SetThumbPos( 0 );
+ aHScroll->SetThumbPos( 0 );
pVScroll->SetThumbPos( 0 );
Invalidate();
@@ -2213,9 +2217,9 @@ Rectangle BrowseBox::GetControlArea() const
{
return Rectangle(
- Point( 0, GetOutputSizePixel().Height() - aHScroll.GetSizePixel().Height() ),
- Size( GetOutputSizePixel().Width() - aHScroll.GetSizePixel().Width(),
- aHScroll.GetSizePixel().Height() ) );
+ Point( 0, GetOutputSizePixel().Height() - aHScroll->GetSizePixel().Height() ),
+ Size( GetOutputSizePixel().Width() - aHScroll->GetSizePixel().Width(),
+ aHScroll->GetSizePixel().Height() ) );
}
@@ -2238,7 +2242,7 @@ void BrowseBox::SetMode( BrowserMode nMode )
getDataWindow()->bNoVScroll = false;
if ( getDataWindow()->bNoHScroll )
- aHScroll.Hide();
+ aHScroll->Hide();
nControlAreaWidth = USHRT_MAX;
@@ -2249,7 +2253,7 @@ void BrowseBox::SetMode( BrowserMode nMode )
MultiSelection *pOldRowSel = bMultiSelection ? uRow.pSel : 0;
MultiSelection *pOldColSel = pColSel;
- delete pVScroll;
+ pVScroll.disposeAndClear();
bThumbDragging = ( nMode & BrowserMode::THUMBDRAGGING ) == BrowserMode::THUMBDRAGGING;
bMultiSelection = ( nMode & BrowserMode::MULTISELECTION ) == BrowserMode::MULTISELECTION;
@@ -2276,10 +2280,11 @@ void BrowseBox::SetMode( BrowserMode nMode )
WinBits nVScrollWinBits =
WB_VSCROLL | ( ( nMode & BrowserMode::THUMBDRAGGING ) ? WB_DRAG : 0 );
- pVScroll = ( nMode & BrowserMode::TRACKING_TIPS ) == BrowserMode::TRACKING_TIPS
- ? new BrowserScrollBar( this, nVScrollWinBits,
- static_cast<BrowserDataWin*>( pDataWin ) )
- : new ScrollBar( this, nVScrollWinBits );
+ pVScroll = VclPtr<ScrollBar>(
+ ( nMode & BrowserMode::TRACKING_TIPS ) == BrowserMode::TRACKING_TIPS
+ ? VclPtr<BrowserScrollBar>::Create( this, nVScrollWinBits,
+ static_cast<BrowserDataWin*>( pDataWin.get() ) )
+ : VclPtr<ScrollBar>::Create( this, nVScrollWinBits ));
pVScroll->SetLineSize( 1 );
pVScroll->SetPageSize(1);
pVScroll->SetScrollHdl( LINK( this, BrowseBox, ScrollHdl ) );
@@ -2299,11 +2304,9 @@ void BrowseBox::SetMode( BrowserMode nMode )
}
else
{
- DELETEZ(getDataWindow()->pHeaderBar);
+ getDataWindow()->pHeaderBar.disposeAndClear();
}
-
-
if ( bColumnCursor )
{
pColSel = pOldColSel ? pOldColSel : new MultiSelection;
@@ -2391,18 +2394,18 @@ long BrowseBox::GetDataRowHeight() const
-BrowserHeader* BrowseBox::CreateHeaderBar( BrowseBox* pParent )
+VclPtr<BrowserHeader> BrowseBox::CreateHeaderBar( BrowseBox* pParent )
{
- BrowserHeader* pNewBar = new BrowserHeader( pParent );
+ VclPtr<BrowserHeader> pNewBar = VclPtr<BrowserHeader>::Create( pParent );
pNewBar->SetStartDragHdl( LINK( this, BrowseBox, StartDragHdl ) );
return pNewBar;
}
void BrowseBox::SetHeaderBar( BrowserHeader* pHeaderBar )
{
- delete static_cast<BrowserDataWin*>(pDataWin)->pHeaderBar;
- static_cast<BrowserDataWin*>( pDataWin )->pHeaderBar = pHeaderBar;
- static_cast<BrowserDataWin*>( pDataWin )->pHeaderBar->SetStartDragHdl( LINK( this, BrowseBox, StartDragHdl ) );
+ static_cast<BrowserDataWin*>( pDataWin.get() )->pHeaderBar.disposeAndClear();
+ static_cast<BrowserDataWin*>( pDataWin.get() )->pHeaderBar = pHeaderBar;
+ static_cast<BrowserDataWin*>( pDataWin.get() )->pHeaderBar->SetStartDragHdl( LINK( this, BrowseBox, StartDragHdl ) );
}
long BrowseBox::GetTitleHeight() const
@@ -2410,7 +2413,7 @@ long BrowseBox::GetTitleHeight() const
long nHeight;
// ask the header bar for the text height (if possible), as the header bar's font is adjusted with
// our (and the header's) zoom factor
- HeaderBar* pHeaderBar = static_cast<BrowserDataWin*>( pDataWin )->pHeaderBar;
+ HeaderBar* pHeaderBar = static_cast<BrowserDataWin*>( pDataWin.get() )->pHeaderBar;
if ( pHeaderBar )
nHeight = pHeaderBar->GetTextHeight();
else