summaryrefslogtreecommitdiff
path: root/starmath/source/edit.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'starmath/source/edit.cxx')
-rw-r--r--starmath/source/edit.cxx26
1 files changed, 21 insertions, 5 deletions
diff --git a/starmath/source/edit.cxx b/starmath/source/edit.cxx
index 34d4ecd29e0e..fa9ebaa138f9 100644
--- a/starmath/source/edit.cxx
+++ b/starmath/source/edit.cxx
@@ -95,7 +95,7 @@ SmEditWindow::SmEditWindow( SmCmdBoxWindow &rMyCmdBoxWin ) :
SetMapMode(MAP_PIXEL);
// Even RTL languages don't use RTL for math
- rCmdBox.GetEditWindow().EnableRTL( false );
+ EnableRTL( false );
ApplyColorConfigValues( SM_MOD()->GetColorConfig() );
@@ -119,6 +119,11 @@ SmEditWindow::SmEditWindow( SmCmdBoxWindow &rMyCmdBoxWin ) :
SmEditWindow::~SmEditWindow()
{
+ disposeOnce();
+}
+
+void SmEditWindow::dispose()
+{
aModifyIdle.Stop();
StartCursorMove();
@@ -127,9 +132,13 @@ SmEditWindow::~SmEditWindow()
// must be done before EditView (and thus EditEngine) is no longer
// available for those classes.
if (pAccessible)
+ {
pAccessible->ClearWin(); // make Accessible defunctional
+ pAccessible = NULL;
+ xAccessible.clear();
+ }
// Note: memory for pAccessible will be freed when the reference
- // xAccessible is released.
+ // xAccessible is released. FIXME: horribly redundant lifecycle ! ...
if (pEditView)
{
@@ -139,7 +148,14 @@ SmEditWindow::~SmEditWindow()
pEditEngine->SetStatusEventHdl( Link() );
pEditEngine->RemoveView( pEditView.get() );
}
+ pEditView.reset();
}
+
+ pHScrollBar.disposeAndClear();
+ pVScrollBar.disposeAndClear();
+ pScrollBox.disposeAndClear();
+
+ vcl::Window::dispose();
}
void SmEditWindow::StartCursorMove()
@@ -534,11 +550,11 @@ void SmEditWindow::CreateEditView()
pEditEngine->InsertView( pEditView.get() );
if (!pVScrollBar)
- pVScrollBar.reset(new ScrollBar(this, WinBits(WB_VSCROLL)));
+ pVScrollBar = VclPtr<ScrollBar>::Create(this, WinBits(WB_VSCROLL));
if (!pHScrollBar)
- pHScrollBar.reset(new ScrollBar(this, WinBits(WB_HSCROLL)));
+ pHScrollBar = VclPtr<ScrollBar>::Create(this, WinBits(WB_HSCROLL));
if (!pScrollBox)
- pScrollBox.reset(new ScrollBarBox(this));
+ pScrollBox = VclPtr<ScrollBarBox>::Create(this);
pVScrollBar->SetScrollHdl(LINK(this, SmEditWindow, ScrollHdl));
pHScrollBar->SetScrollHdl(LINK(this, SmEditWindow, ScrollHdl));
pVScrollBar->EnableDrag( true );