diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-03-26 11:04:52 +0000 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2015-04-14 14:40:41 +0200 |
commit | d6018eac98b5582d8c2fc5bd4893648b51c2afcf (patch) | |
tree | bc4a8aca4eb8fa1294de851c1319f91449a61cc6 /svx | |
parent | 50749c2bc8c2395609bf153bc55fc6357aabf9f4 (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>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/accessibility/ChildrenManagerImpl.cxx | 20 |
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) { |