summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--svx/source/accessibility/ChildrenManagerImpl.cxx20
1 files changed, 15 insertions, 5 deletions
diff --git a/svx/source/accessibility/ChildrenManagerImpl.cxx b/svx/source/accessibility/ChildrenManagerImpl.cxx
index 12e4054e900c..869c5dd4acfc 100644
--- a/svx/source/accessibility/ChildrenManagerImpl.cxx
+++ b/svx/source/accessibility/ChildrenManagerImpl.cxx
@@ -276,13 +276,23 @@ void ChildrenManagerImpl::Update (bool bCreateNewObjectsOnDemand)
// 6. If children have to be created immediately and not on demand then
// create the missing accessible objects now.
- if ( ! bCreateNewObjectsOnDemand)
- CreateAccessibilityObjects (maVisibleChildren);
+ if (!bCreateNewObjectsOnDemand)
+ {
+ //operate on a copy of the list and restore it afterwards to guard
+ //against the pathological case where maVisibleChildren gets modified
+ //by other calls to this object while CreateAccessibilityObjects
+ //executes which can happen when java is disabled and the "enable-java"
+ //dialog appears during the instantiation of the linguistic components
+ //triggered by the creation of shapes belonging to the a11y objects
+ //
+ //i.e. launch start-center, launch impress with java disabled and
+ //a java-using linguistic component installed
+ maVisibleChildren.swap(aChildList);
+ CreateAccessibilityObjects(aChildList);
+ maVisibleChildren.swap(aChildList);
+ }
}
-
-
-
void ChildrenManagerImpl::CreateListOfVisibleShapes (
ChildDescriptorListType& raDescriptorList)
{