summaryrefslogtreecommitdiff
path: root/patches/dev300/layout-accessibility-dispose-only-once.diff
blob: 2175504ae89e244ced27d741de39270832fc3eae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
---
 toolkit/source/layout/vcl/wfield.cxx  |    4 ++++
 toolkit/source/layout/vcl/wrapper.cxx |   13 ++++++-------
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git toolkit/source/layout/vcl/wfield.cxx toolkit/source/layout/vcl/wfield.cxx
index 7f16769..bf89d60 100644
--- toolkit/source/layout/vcl/wfield.cxx
+++ toolkit/source/layout/vcl/wfield.cxx
@@ -419,6 +419,8 @@ ComboBox::~ComboBox ()
 #ifndef __SUNPRO_CC
     OSL_TRACE ("%s: deleting ComboBox for window: %p", __FUNCTION__, GetWindow ());
 #endif
+    SetClickHdl (Link ());
+    SetSelectHdl (Link ());
 }
 
 ComboBoxImpl::~ComboBoxImpl ()
@@ -668,6 +670,8 @@ public:
 
 ListBox::~ListBox ()
 {
+    SetClickHdl (Link ());
+    SetSelectHdl (Link ());
 }
 
 sal_uInt16 ListBox::InsertEntry (String const& rStr, sal_uInt16 nPos)
diff --git toolkit/source/layout/vcl/wrapper.cxx toolkit/source/layout/vcl/wrapper.cxx
index 9c69662..d377970 100644
--- toolkit/source/layout/vcl/wrapper.cxx
+++ toolkit/source/layout/vcl/wrapper.cxx
@@ -174,7 +174,10 @@ WindowImpl::WindowImpl (Context *context, const PeerHandle &peer, Window *window
 WindowImpl::~WindowImpl ()
 {
     if (mpWindow)
+    {
+        mpWindow->GetWindow ()->SetAccessible (0);
         mpWindow->mpImpl = 0;
+    }
     if (mvclWindow)
     {
         VCLXWindow *v = mvclWindow->GetWindowPeer ();
@@ -696,10 +699,6 @@ ControlImpl::ControlImpl (Context *context, const PeerHandle &peer, Window *wind
 
 ControlImpl::~ControlImpl ()
 {
-    if ((!!mGetFocusHdl || !!mLoseFocusHdl) && mxWindow.is ())
-        /* Disposing will be done @ VCLXWindow::dispose () maFocusListeners.disposeAndClear()
-           don't do it twice */
-        mxWindow.clear ();
 }
 
 void ControlImpl::SetGetFocusHdl (Link const& link)
@@ -723,7 +722,7 @@ void ControlImpl::SetLoseFocusHdl (Link const& link)
 
 Link& ControlImpl::GetLoseFocusHdl ()
 {
-    return mGetFocusHdl;
+    return mLoseFocusHdl;
 }
 
 void ControlImpl::UpdateListening (Link const& link)
@@ -735,10 +734,10 @@ void ControlImpl::UpdateListening (Link const& link)
         mxWindow->addFocusListener (this);
 }
 
-void SAL_CALL ControlImpl::disposing (lang::EventObject const&)
+void SAL_CALL ControlImpl::disposing (lang::EventObject const& e)
     throw (uno::RuntimeException)
 {
-///    mxWindow.clear ();
+    WindowImpl::disposing (e);
 }
 
 void SAL_CALL ControlImpl::focusGained (awt::FocusEvent const&)
-- 
1.7.0.1