[Libreoffice-commits] .: sd/source
Caolán McNamara
caolan at kemper.freedesktop.org
Thu Apr 14 06:17:48 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 0929504217c225358388c911d3f81d7626c7776c
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
diff --git a/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx b/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx
index 43e23fd..6552c69 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:
@@ -975,7 +976,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));
}
@@ -988,7 +989,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(
@@ -1137,6 +1138,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