summaryrefslogtreecommitdiff
path: root/accessibility
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-02-15 17:12:00 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-02-15 17:14:42 +0000
commit1b13c952f50aab2b907dab13395ab23d0955c238 (patch)
tree73f8eab1bab60b3f2d03f24ea7adf61b48aa4d23 /accessibility
parent2cfbd84c710d76d8c5dbdadaa9c1b9278d8b7c64 (diff)
Resolves: rhbz#895196 sc filter float a11y parent of itself loop/recurse
Change-Id: I3679e7cfcd32a78b40c6a7b803c92ff0abe6f32c
Diffstat (limited to 'accessibility')
-rw-r--r--accessibility/source/helper/acc_factory.cxx8
1 files changed, 5 insertions, 3 deletions
diff --git a/accessibility/source/helper/acc_factory.cxx b/accessibility/source/helper/acc_factory.cxx
index dc16fe664992..93f6bf54912e 100644
--- a/accessibility/source/helper/acc_factory.cxx
+++ b/accessibility/source/helper/acc_factory.cxx
@@ -382,9 +382,11 @@ inline bool hasFloatingChild(Window *pWindow)
}
else if ( nType == WINDOW_BORDERWINDOW && hasFloatingChild( pWindow ) )
{
- PopupMenuFloatingWindow* pChild = dynamic_cast<PopupMenuFloatingWindow*>(
- pWindow->GetAccessibleChildWindow(0));
- if ( pChild && pChild->IsPopupMenu() )
+ // The logic here has to match that of Window::GetAccessibleParentWindow in
+ // vcl/source/window/window.cxx to avoid PopupMenuFloatingWindow
+ // becoming a11y parents of themselves
+ Window* pChild = pWindow->GetAccessibleChildWindow(0);
+ if (PopupMenuFloatingWindow::isPopupMenu(pChild))
{
// Get the accessible context from the child window.
Reference<XAccessible> xAccessible = pChild->CreateAccessible();