[Libreoffice-commits] .: Branch 'libreoffice-3-4' - sd/source

Caolán McNamara caolan at kemper.freedesktop.org
Thu Apr 14 06:25:44 PDT 2011


 sd/source/ui/accessibility/AccessibleSlideSorterView.cxx |   14 ++++++++++++--
 sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx  |    3 ++-
 2 files changed, 14 insertions(+), 3 deletions(-)

New commits:
commit 389ab0aee390bc5532e9e1ba5b4f2035ac7d6d5e
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Apr 14 14:16:39 2011 +0100

    fix accessibility crash
    
    two different callbacks connected to the same destination where
    that destination unset the callback id of one of the callbacks
    (cherry picked from commit 0929504217c225358388c911d3f81d7626c7776c)

diff --git a/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx b/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx
index 9efd94a..15e65d7 100644
--- a/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx
+++ b/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx
@@ -94,6 +94,7 @@ public:
     DECL_LINK(SelectionChangeListener, void*);
     DECL_LINK(BroadcastSelectionChange, void*);
     DECL_LINK(FocusChangeListener, void*);
+    DECL_LINK(VisibilityChangeListener, void*);
     DECL_LINK(UpdateChildrenCallback, void*);
 
 private:
@@ -970,7 +971,7 @@ void AccessibleSlideSorterView::Implementation::ConnectListeners (void)
     mrSlideSorter.GetController().GetFocusManager().AddFocusChangeListener(
         LINK(this,AccessibleSlideSorterView::Implementation,FocusChangeListener));
     mrSlideSorter.GetView().AddVisibilityChangeListener(
-        LINK(this,AccessibleSlideSorterView::Implementation,UpdateChildrenCallback));
+        LINK(this,AccessibleSlideSorterView::Implementation,VisibilityChangeListener));
 }
 
 
@@ -983,7 +984,7 @@ void AccessibleSlideSorterView::Implementation::ReleaseListeners (void)
     mrSlideSorter.GetController().GetSelectionManager()->RemoveSelectionChangeListener(
         LINK(this,AccessibleSlideSorterView::Implementation,SelectionChangeListener));
     mrSlideSorter.GetView().RemoveVisibilityChangeListener(
-        LINK(this,AccessibleSlideSorterView::Implementation,UpdateChildrenCallback));
+        LINK(this,AccessibleSlideSorterView::Implementation,VisibilityChangeListener));
 
     if (mpWindow != NULL)
         mpWindow->RemoveEventListener(
@@ -1132,6 +1133,15 @@ IMPL_LINK(AccessibleSlideSorterView::Implementation, UpdateChildrenCallback, voi
 
 
 
+IMPL_LINK(AccessibleSlideSorterView::Implementation, VisibilityChangeListener, void*, EMPTYARG )
+{
+    UpdateChildren();
+    return 1;
+}
+
+
+
+
 } // end of namespace ::accessibility
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx b/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx
index 12ba6f8..c0a90c9 100644
--- a/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx
+++ b/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx
@@ -279,12 +279,13 @@ Reference<drawing::XDrawSubController> SlideSorterViewShell::CreateSubController
     ::com::sun::star::accessibility::XAccessible>
     SlideSorterViewShell::CreateAccessibleDocumentView (::sd::Window* pWindow)
 {
-    OSL_ASSERT(mpSlideSorter.get()!=NULL);
     // When the view is not set then the initialization is not yet complete
     // and we can not yet provide an accessibility object.
     if (mpView == NULL || mpSlideSorter.get() == NULL)
         return NULL;
 
+    OSL_ASSERT(mpSlideSorter.get()!=NULL);
+
     ::accessibility::AccessibleSlideSorterView *pAccessibleView =
     new ::accessibility::AccessibleSlideSorterView(
         *mpSlideSorter.get(),


More information about the Libreoffice-commits mailing list