diff options
Diffstat (limited to 'svx/source/tbxctrls/linectrl.cxx')
-rw-r--r-- | svx/source/tbxctrls/linectrl.cxx | 85 |
1 files changed, 45 insertions, 40 deletions
diff --git a/svx/source/tbxctrls/linectrl.cxx b/svx/source/tbxctrls/linectrl.cxx index 836fad360479..5f303bc76b98 100644 --- a/svx/source/tbxctrls/linectrl.cxx +++ b/svx/source/tbxctrls/linectrl.cxx @@ -183,9 +183,9 @@ void SvxLineStyleToolBoxControl::Update( const SfxPoolItem* pState ) -vcl::Window* SvxLineStyleToolBoxControl::CreateItemWindow( vcl::Window *pParent ) +VclPtr<vcl::Window> SvxLineStyleToolBoxControl::CreateItemWindow( vcl::Window *pParent ) { - return new SvxLineBox( pParent, m_xFrame ); + return VclPtr<SvxLineBox>::Create( pParent, m_xFrame ).get(); } SvxLineWidthToolBoxControl::SvxLineWidthToolBoxControl( @@ -244,9 +244,9 @@ void SvxLineWidthToolBoxControl::StateChanged( -vcl::Window* SvxLineWidthToolBoxControl::CreateItemWindow( vcl::Window *pParent ) +VclPtr<vcl::Window> SvxLineWidthToolBoxControl::CreateItemWindow( vcl::Window *pParent ) { - return( new SvxMetricField( pParent, m_xFrame ) ); + return VclPtr<SvxMetricField>::Create( pParent, m_xFrame ).get(); } SvxLineEndWindow::SvxLineEndWindow( @@ -256,7 +256,7 @@ SvxLineEndWindow::SvxLineEndWindow( SfxPopupWindow( nSlotId, rFrame, WinBits( WB_STDPOPUP | WB_OWNERDRAWDECORATION ) ), - aLineEndSet ( this, WinBits( WB_ITEMBORDER | WB_3DLOOK | WB_NO_DIRECTSELECT ) ), + aLineEndSet ( VclPtr<ValueSet>::Create(this, WinBits( WB_ITEMBORDER | WB_3DLOOK | WB_NO_DIRECTSELECT )) ), nCols ( 2 ), nLines ( 12 ), nLineEndWidth ( 400 ), @@ -277,7 +277,7 @@ SvxLineEndWindow::SvxLineEndWindow( rFrame, pParentWindow, WinBits( WB_STDPOPUP | WB_OWNERDRAWDECORATION ) ), - aLineEndSet ( this, WinBits( WB_ITEMBORDER | WB_3DLOOK | WB_NO_DIRECTSELECT ) ), + aLineEndSet ( VclPtr<ValueSet>::Create(this, WinBits( WB_ITEMBORDER | WB_3DLOOK | WB_NO_DIRECTSELECT ) )), nCols ( 2 ), nLines ( 12 ), nLineEndWidth ( 400 ), @@ -294,7 +294,7 @@ void SvxLineEndWindow::implInit() SfxObjectShell* pDocSh = SfxObjectShell::Current(); SetHelpId( HID_POPUP_LINEEND ); - aLineEndSet.SetHelpId( HID_POPUP_LINEEND_CTRL ); + aLineEndSet->SetHelpId( HID_POPUP_LINEEND_CTRL ); if ( pDocSh ) { @@ -308,8 +308,8 @@ void SvxLineEndWindow::implInit() } DBG_ASSERT( pLineEndList.is(), "LineEndList not found" ); - aLineEndSet.SetSelectHdl( LINK( this, SvxLineEndWindow, SelectHdl ) ); - aLineEndSet.SetColCount( nCols ); + aLineEndSet->SetSelectHdl( LINK( this, SvxLineEndWindow, SelectHdl ) ); + aLineEndSet->SetColCount( nCols ); // ValueSet fill with entries of LineEndList FillValueSet(); @@ -317,27 +317,32 @@ void SvxLineEndWindow::implInit() AddStatusListener( OUString( ".uno:LineEndListState" )); //ChangeHelpId( HID_POPUP_LINEENDSTYLE ); - aLineEndSet.Show(); + aLineEndSet->Show(); } -SfxPopupWindow* SvxLineEndWindow::Clone() const +VclPtr<SfxPopupWindow> SvxLineEndWindow::Clone() const { - return new SvxLineEndWindow( GetId(), mxFrame, GetText() ); + return VclPtr<SvxLineEndWindow>::Create( GetId(), mxFrame, GetText() ); } SvxLineEndWindow::~SvxLineEndWindow() { + disposeOnce(); } - +void SvxLineEndWindow::dispose() +{ + aLineEndSet.disposeAndClear(); + SfxPopupWindow::dispose(); +} IMPL_LINK_NOARG(SvxLineEndWindow, SelectHdl) { boost::scoped_ptr<XLineEndItem> pLineEndItem; boost::scoped_ptr<XLineStartItem> pLineStartItem; - sal_uInt16 nId = aLineEndSet.GetSelectItemId(); + sal_uInt16 nId = aLineEndSet->GetSelectItemId(); if( nId == 1 ) { @@ -380,7 +385,7 @@ IMPL_LINK_NOARG(SvxLineEndWindow, SelectHdl) /* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() call. This instance may be deleted in the meantime (i.e. when a dialog is opened while in Dispatch()), accessing members will crash in this case. */ - aLineEndSet.SetNoSelection(); + aLineEndSet->SetNoSelection(); SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ), OUString( ".uno:LineEndStyle" ), @@ -396,7 +401,7 @@ void SvxLineEndWindow::FillValueSet() if( pLineEndList.is() ) { XLineEndEntry* pEntry = NULL; - VirtualDevice aVD; + ScopedVclPtrInstance< VirtualDevice > pVD; long nCount = pLineEndList->Count(); @@ -409,14 +414,14 @@ void SvxLineEndWindow::FillValueSet() OSL_ENSURE( !aBmp.IsEmpty(), "UI bitmap was not created" ); aBmpSize = aBmp.GetSizePixel(); - aVD.SetOutputSizePixel( aBmpSize, false ); + pVD->SetOutputSizePixel( aBmpSize, false ); aBmpSize.Width() = aBmpSize.Width() / 2; Point aPt0( 0, 0 ); Point aPt1( aBmpSize.Width(), 0 ); - aVD.DrawBitmap( Point(), aBmp ); - aLineEndSet.InsertItem(1, Image(aVD.GetBitmap(aPt0, aBmpSize)), pEntry->GetName()); - aLineEndSet.InsertItem(2, Image(aVD.GetBitmap(aPt1, aBmpSize)), pEntry->GetName()); + pVD->DrawBitmap( Point(), aBmp ); + aLineEndSet->InsertItem(1, Image(pVD->GetBitmap(aPt0, aBmpSize)), pEntry->GetName()); + aLineEndSet->InsertItem(2, Image(pVD->GetBitmap(aPt1, aBmpSize)), pEntry->GetName()); delete pLineEndList->Remove( nCount ); @@ -427,14 +432,14 @@ void SvxLineEndWindow::FillValueSet() aBmp = pLineEndList->GetUiBitmap( i ); OSL_ENSURE( !aBmp.IsEmpty(), "UI bitmap was not created" ); - aVD.DrawBitmap( aPt0, aBmp ); - aLineEndSet.InsertItem((sal_uInt16)((i+1L)*2L+1L), - Image(aVD.GetBitmap(aPt0, aBmpSize)), pEntry->GetName()); - aLineEndSet.InsertItem((sal_uInt16)((i+2L)*2L), - Image(aVD.GetBitmap(aPt1, aBmpSize)), pEntry->GetName()); + pVD->DrawBitmap( aPt0, aBmp ); + aLineEndSet->InsertItem((sal_uInt16)((i+1L)*2L+1L), + Image(pVD->GetBitmap(aPt0, aBmpSize)), pEntry->GetName()); + aLineEndSet->InsertItem((sal_uInt16)((i+2L)*2L), + Image(pVD->GetBitmap(aPt1, aBmpSize)), pEntry->GetName()); } nLines = std::min( (sal_uInt16)(nCount + 1), (sal_uInt16) MAX_LINES ); - aLineEndSet.SetLineCount( nLines ); + aLineEndSet->SetLineCount( nLines ); SetSize(); } @@ -451,15 +456,15 @@ void SvxLineEndWindow::Resize() mbInResize = true; if ( !IsRollUp() ) { - aLineEndSet.SetColCount( nCols ); - aLineEndSet.SetLineCount( nLines ); + aLineEndSet->SetColCount( nCols ); + aLineEndSet->SetLineCount( nLines ); SetSize(); Size aSize = GetOutputSizePixel(); aSize.Width() -= 4; aSize.Height() -= 4; - aLineEndSet.SetPosSizePixel( Point( 2, 2 ), aSize ); + aLineEndSet->SetPosSizePixel( Point( 2, 2 ), aSize ); } //SfxPopupWindow::Resize(); mbInResize = false; @@ -474,10 +479,10 @@ void SvxLineEndWindow::Resizing( Size& rNewSize ) aBitmapSize.Width() += 6; aBitmapSize.Height() += 6; - Size aItemSize = aLineEndSet.CalcItemSizePixel( aBitmapSize ); // -> Member + Size aItemSize = aLineEndSet->CalcItemSizePixel( aBitmapSize ); // -> Member //Size aOldSize = GetOutputSizePixel(); // for width - sal_uInt16 nItemCount = aLineEndSet.GetItemCount(); // -> Member + sal_uInt16 nItemCount = aLineEndSet->GetItemCount(); // -> Member // identify columns long nItemW = aItemSize.Width(); @@ -517,7 +522,7 @@ void SvxLineEndWindow::Resizing( Size& rNewSize ) void SvxLineEndWindow::StartSelection() { - aLineEndSet.StartSelection(); + aLineEndSet->StartSelection(); } @@ -540,7 +545,7 @@ void SvxLineEndWindow::StateChanged( pLineEndList = static_cast<const SvxLineEndListItem*>(pState)->GetLineEndList(); DBG_ASSERT( pLineEndList.is(), "LineEndList not found" ); - aLineEndSet.Clear(); + aLineEndSet->Clear(); FillValueSet(); Size aSize = GetOutputSizePixel(); @@ -569,23 +574,23 @@ void SvxLineEndWindow::SetSize() //if( !bPopupMode ) if( !IsInPopupMode() ) { - sal_uInt16 nItemCount = aLineEndSet.GetItemCount(); // -> Member + sal_uInt16 nItemCount = aLineEndSet->GetItemCount(); // -> Member sal_uInt16 nMaxLines = nItemCount / nCols; // -> Member ? if( nItemCount % nCols ) nMaxLines++; - WinBits nBits = aLineEndSet.GetStyle(); + WinBits nBits = aLineEndSet->GetStyle(); if ( nLines == nMaxLines ) nBits &= ~WB_VSCROLL; else nBits |= WB_VSCROLL; - aLineEndSet.SetStyle( nBits ); + aLineEndSet->SetStyle( nBits ); } Size aSize( aBmpSize ); aSize.Width() += 6; aSize.Height() += 6; - aSize = aLineEndSet.CalcWindowSizePixel( aSize ); + aSize = aLineEndSet->CalcWindowSizePixel( aSize ); aSize.Width() += 4; aSize.Height() += 4; SetOutputSizePixel( aSize ); @@ -599,7 +604,7 @@ void SvxLineEndWindow::GetFocus() SfxPopupWindow::GetFocus(); // Grab the focus to the line ends value set so that it can be controlled // with the keyboard. - aLineEndSet.GrabFocus(); + aLineEndSet->GrabFocus(); } SvxLineEndToolBoxControl::SvxLineEndToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox &rTbx ) : @@ -624,10 +629,10 @@ SfxPopupWindowType SvxLineEndToolBoxControl::GetPopupWindowType() const -SfxPopupWindow* SvxLineEndToolBoxControl::CreatePopupWindow() +VclPtr<SfxPopupWindow> SvxLineEndToolBoxControl::CreatePopupWindow() { SvxLineEndWindow* pLineEndWin = - new SvxLineEndWindow( GetId(), m_xFrame, &GetToolBox(), SVX_RESSTR( RID_SVXSTR_LINEEND ) ); + VclPtr<SvxLineEndWindow>::Create( GetId(), m_xFrame, &GetToolBox(), SVX_RESSTR( RID_SVXSTR_LINEEND ) ); pLineEndWin->StartPopupMode( &GetToolBox(), FLOATWIN_POPUPMODE_GRABFOCUS | FLOATWIN_POPUPMODE_ALLOWTEAROFF | |