diff options
Diffstat (limited to 'vcl/source/window/wrkwin.cxx')
-rw-r--r-- | vcl/source/window/wrkwin.cxx | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/vcl/source/window/wrkwin.cxx b/vcl/source/window/wrkwin.cxx index 1f75bd63a5ec..136adc859d84 100644 --- a/vcl/source/window/wrkwin.cxx +++ b/vcl/source/window/wrkwin.cxx @@ -49,7 +49,7 @@ void WorkWindow::ImplInit( vcl::Window* pParent, WinBits nStyle, SystemParentDat if ( nStyle & WB_APP ) nFrameStyle |= BORDERWINDOW_STYLE_APP; - ImplBorderWindow* pBorderWin = new ImplBorderWindow( pParent, pSystemParentData, nStyle, nFrameStyle ); + VclPtrInstance<ImplBorderWindow> pBorderWin( pParent, pSystemParentData, nStyle, nFrameStyle ); Window::ImplInit( pBorderWin, nStyle & (WB_3DLOOK | WB_CLIPCHILDREN | WB_DIALOGCONTROL | WB_SYSTEMFLOATWIN), NULL ); pBorderWin->mpWindowImpl->mpClientWindow = this; pBorderWin->GetBorder( mpWindowImpl->mnLeftBorder, mpWindowImpl->mnTopBorder, mpWindowImpl->mnRightBorder, mpWindowImpl->mnBottomBorder ); @@ -113,12 +113,18 @@ WorkWindow::WorkWindow( SystemParentData* pParent ) : WorkWindow::~WorkWindow() { + disposeOnce(); +} + +void WorkWindow::dispose() +{ ImplSVData* pSVData = ImplGetSVData(); if ( pSVData->maWinData.mpAppWin == this ) { pSVData->maWinData.mpAppWin = NULL; Application::Quit(); } + SystemWindow::dispose(); } void WorkWindow::ShowFullScreenMode( bool bFullScreenMode ) |