summaryrefslogtreecommitdiff
path: root/vcl/source/window/status.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/source/window/status.cxx')
-rw-r--r--vcl/source/window/status.cxx12
1 files changed, 9 insertions, 3 deletions
diff --git a/vcl/source/window/status.cxx b/vcl/source/window/status.cxx
index bca642e23612..7f43c18e2b1a 100644
--- a/vcl/source/window/status.cxx
+++ b/vcl/source/window/status.cxx
@@ -45,7 +45,7 @@ public:
ImplData();
~ImplData();
- VirtualDevice* mpVirDev;
+ VclPtr<VirtualDevice> mpVirDev;
long mnItemBorderWidth;
bool mbDrawItemFrames:1;
};
@@ -123,7 +123,7 @@ void StatusBar::ImplInit( vcl::Window* pParent, WinBits nStyle )
// remember WinBits
mpItemList = new ImplStatusItemList;
- mpImplData->mpVirDev = new VirtualDevice( *this );
+ mpImplData->mpVirDev = VclPtr<VirtualDevice>::Create( *this );
mnCurItemId = 0;
mbFormat = true;
mbVisibleItems = true;
@@ -151,6 +151,11 @@ StatusBar::StatusBar( vcl::Window* pParent, WinBits nStyle ) :
StatusBar::~StatusBar()
{
+ disposeOnce();
+}
+
+void StatusBar::dispose()
+{
// delete all items
for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) {
delete (*mpItemList)[ i ];
@@ -158,8 +163,9 @@ StatusBar::~StatusBar()
delete mpItemList;
// delete VirtualDevice
- delete mpImplData->mpVirDev;
+ mpImplData->mpVirDev.disposeAndClear();
delete mpImplData;
+ Window::dispose();
}
void StatusBar::AdjustItemWidthsForHiDPI(bool bAdjustHiDPI)