summaryrefslogtreecommitdiff
path: root/sw/source/core/draw
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-06-30 16:56:00 +0100
committerMichael Stahl <mstahl@redhat.com>2016-07-05 14:37:26 +0000
commit04081b6907132c867041dd492408b5349f26cd42 (patch)
tree6010ac84297670b0dbc3234ca46953933296a258 /sw/source/core/draw
parentdd7a2c95b86d158be8d0637bdff13b9a0ed9954b (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/source/core/draw')
-rw-r--r--sw/source/core/draw/dview.cxx8
1 files changed, 4 insertions, 4 deletions
diff --git a/sw/source/core/draw/dview.cxx b/sw/source/core/draw/dview.cxx
index 495485c82bdd..5105092e4e8a 100644
--- a/sw/source/core/draw/dview.cxx
+++ b/sw/source/core/draw/dview.cxx
@@ -375,7 +375,7 @@ void SwDrawView::MoveRepeatedObjs( const SwAnchoredObject& _rMovedAnchoredObj,
}
else
{
- rImp.DisposeAccessibleObj( pAnchoredObj->GetDrawObj() );
+ rImp.DisposeAccessibleObj(pAnchoredObj->GetDrawObj(), true);
rImp.AddAccessibleObj( pAnchoredObj->GetDrawObj() );
}
}
@@ -411,7 +411,7 @@ void SwDrawView::MoveRepeatedObjs( const SwAnchoredObject& _rMovedAnchoredObj,
}
else
{
- rImp.DisposeAccessibleObj( pAnchoredObj->GetDrawObj() );
+ rImp.DisposeAccessibleObj(pAnchoredObj->GetDrawObj(), true);
rImp.AddAccessibleObj( pAnchoredObj->GetDrawObj() );
}
}
@@ -621,7 +621,7 @@ void SwDrawView::ObjOrderChanged( SdrObject* pObj, sal_uLong nOldPos,
}
else
{
- rImp.DisposeAccessibleObj( pTmpObj );
+ rImp.DisposeAccessibleObj(pTmpObj, true);
rImp.AddAccessibleObj( pTmpObj );
}
}
@@ -640,7 +640,7 @@ void SwDrawView::ObjOrderChanged( SdrObject* pObj, sal_uLong nOldPos,
else
{
// adjustments for accessibility API
- rImp.DisposeAccessibleObj( pObj );
+ rImp.DisposeAccessibleObj(pObj, true);
rImp.AddAccessibleObj( pObj );
}