summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-03-26 11:04:52 +0000
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-04-12 20:07:22 +0000
commita025af8f1713a826067a4a351d47d29d1342693f (patch)
tree7bf82d4a3cb0476170b6a59a36a5c2820ccb257b
parent033cb1d3db3cf705a3d3d130321f06040f5c0636 (diff)
survive 'enable jre' dialog interrupting CreateAccessibilityObjects
Change-Id: I4395160780fc055d14554ad62c6ec757ec8dbbe1 (cherry picked from commit f2fcf221a42a87a4604cecd1b6b29d4c20986ec0) Reviewed-on: https://gerrit.libreoffice.org/15093 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
-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)
{