summaryrefslogtreecommitdiff
path: root/svx/source/svdraw/svdibrow.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/svdraw/svdibrow.cxx')
-rw-r--r--svx/source/svdraw/svdibrow.cxx51
1 files changed, 29 insertions, 22 deletions
diff --git a/svx/source/svdraw/svdibrow.cxx b/svx/source/svdraw/svdibrow.cxx
index d816c0ede1c6..cddf3dfa9954 100644
--- a/svx/source/svdraw/svdibrow.cxx
+++ b/svx/source/svdraw/svdibrow.cxx
@@ -162,22 +162,18 @@ bool ImpItemListRow::operator==(const ImpItemListRow& rEntry) const
class ImpItemEdit: public Edit
{
- _SdrItemBrowserControl* pBrowse;
+ VclPtr<_SdrItemBrowserControl> pBrowse;
public:
ImpItemEdit(vcl::Window* pParent, _SdrItemBrowserControl* pBrowse_, WinBits nBits=0)
: Edit(pParent, nBits),
pBrowse(pBrowse_)
{}
-
- virtual ~ImpItemEdit();
+ virtual ~ImpItemEdit() { disposeOnce(); }
+ virtual void dispose() SAL_OVERRIDE { pBrowse.clear(); Edit::dispose(); }
virtual void KeyInput(const KeyEvent& rEvt) SAL_OVERRIDE;
};
-ImpItemEdit::~ImpItemEdit()
-{
-}
-
void ImpItemEdit::KeyInput(const KeyEvent& rKEvt)
{
_SdrItemBrowserControl* pBrowseMerk = pBrowse;
@@ -217,11 +213,17 @@ _SdrItemBrowserControl::_SdrItemBrowserControl(vcl::Window* pParent, WinBits nBi
_SdrItemBrowserControl::~_SdrItemBrowserControl()
{
- delete pEditControl;
+ disposeOnce();
+}
+
+void _SdrItemBrowserControl::dispose()
+{
+ pEditControl.disposeAndClear();
delete pAktChangeEntry;
Clear();
+ BrowseBox::dispose();
}
void _SdrItemBrowserControl::ImpCtor()
@@ -493,7 +495,7 @@ bool _SdrItemBrowserControl::BegChangeEntry(sal_uIntPtr nPos)
ImpItemListRow* pEntry=ImpGetEntry(nPos);
if (pEntry!=NULL && !pEntry->bComment) {
SetMode(MYBROWSEMODE & BrowserMode(~BrowserMode::KEEPHIGHLIGHT));
- pEditControl=new ImpItemEdit(&GetDataWindow(),this,0);
+ pEditControl=VclPtr<ImpItemEdit>::Create(&GetDataWindow(),this,0);
Rectangle aRect(GetFieldRectPixel(nPos, ITEMBROWSER_VALUECOL_ID, false));
aRect.Left()+=2; // little offset for the Edit, so it's exact to the pixel
aRect.Right()--;
@@ -528,10 +530,9 @@ bool _SdrItemBrowserControl::BegChangeEntry(sal_uIntPtr nPos)
bool _SdrItemBrowserControl::EndChangeEntry()
{
bool bRet = false;
- if (pEditControl!=NULL) {
+ if (pEditControl!=nullptr) {
aEntryChangedHdl.Call(this);
- delete pEditControl;
- pEditControl=NULL;
+ pEditControl.disposeAndClear();
delete pAktChangeEntry;
pAktChangeEntry=NULL;
vcl::Window* pParent=GetParent();
@@ -544,9 +545,8 @@ bool _SdrItemBrowserControl::EndChangeEntry()
void _SdrItemBrowserControl::BrkChangeEntry()
{
- if (pEditControl!=NULL) {
- delete pEditControl;
- pEditControl=NULL;
+ if (pEditControl!=nullptr) {
+ pEditControl.disposeAndClear();
delete pAktChangeEntry;
pAktChangeEntry=NULL;
vcl::Window* pParent=GetParent();
@@ -1046,25 +1046,32 @@ void _SdrItemBrowserControl::SetAttributes(const SfxItemSet* pSet, const SfxItem
_SdrItemBrowserWindow::_SdrItemBrowserWindow(vcl::Window* pParent, WinBits nBits):
FloatingWindow(pParent,nBits),
- aBrowse(this)
+ aBrowse(VclPtr<_SdrItemBrowserControl>::Create(this))
{
- SetOutputSizePixel(aBrowse.GetSizePixel());
+ SetOutputSizePixel(aBrowse->GetSizePixel());
SetText(OUString("Joe's ItemBrowser"));
- aBrowse.Show();
+ aBrowse->Show();
}
_SdrItemBrowserWindow::~_SdrItemBrowserWindow()
{
+ disposeOnce();
+}
+
+void _SdrItemBrowserWindow::dispose()
+{
+ aBrowse.disposeAndClear();
+ FloatingWindow::dispose();
}
void _SdrItemBrowserWindow::Resize()
{
- aBrowse.SetSizePixel(GetOutputSizePixel());
+ aBrowse->SetSizePixel(GetOutputSizePixel());
}
void _SdrItemBrowserWindow::GetFocus()
{
- aBrowse.GrabFocus();
+ aBrowse->GrabFocus();
}
// - SdrItemBrowser -
@@ -1075,8 +1082,8 @@ SdrItemBrowser::SdrItemBrowser(SdrView& rView):
bDirty(false)
{
aIdle.SetIdleHdl(LINK(this,SdrItemBrowser,IdleHdl));
- GetBrowserControl().SetEntryChangedHdl(LINK(this,SdrItemBrowser,ChangedHdl));
- GetBrowserControl().SetSetDirtyHdl(LINK(this,SdrItemBrowser,SetDirtyHdl));
+ GetBrowserControl()->SetEntryChangedHdl(LINK(this,SdrItemBrowser,ChangedHdl));
+ GetBrowserControl()->SetSetDirtyHdl(LINK(this,SdrItemBrowser,SetDirtyHdl));
SetDirty();
}