diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-06-30 16:56:00 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2016-07-05 14:37:26 +0000 |
commit | 04081b6907132c867041dd492408b5349f26cd42 (patch) | |
tree | 6010ac84297670b0dbc3234ca46953933296a258 /sw/inc/accmap.hxx | |
parent | dd7a2c95b86d158be8d0637bdff13b9a0ed9954b (diff) |
a11y crash on deleting certain frame in certain document
I've an internal RH document which crashes in a11y when a paragraph with a
graphic and a drawing frame in it is deleted.
The SdrObject is removed and deleted, but when
SwAccessibleContext::DisposeChild is called the object does not pass IsShowing
so its not removed from the accessibility map. Leaving an entry in the map
pointing to a deleted SdrObject
So here take the route-one approach of always removing from the map
accessibility children which depend on a SdrObject which is getting deleted,
whether or not it is inside the visible area at the moment.
The real change here is to SwAccessibleContext::DisposeChild and to
SwFrame::RemoveDrawObj
Change-Id: I764cd54d6216d233756f52b5be66c80737b5e38d
Reviewed-on: https://gerrit.libreoffice.org/26824
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'sw/inc/accmap.hxx')
-rw-r--r-- | sw/inc/accmap.hxx | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sw/inc/accmap.hxx b/sw/inc/accmap.hxx index 7c1f2299b805..25c96967e6dd 100644 --- a/sw/inc/accmap.hxx +++ b/sw/inc/accmap.hxx @@ -185,7 +185,8 @@ public: void A11yDispose( const SwFrame* pFrame, const SdrObject* pObj, vcl::Window* pWindow, - bool bRecursive = false ); + bool bRecursive = false, + bool bCanSkipInvisible = true ); void InvalidatePosOrSize( const SwFrame* pFrame, const SdrObject* pObj, |