Resolves: rhbz#895196 sc filter float a11y parent of itself
This commit is contained in:
parent
ad6717436b
commit
febdd3d504
@ -0,0 +1,96 @@
|
||||
From 1b13c952f50aab2b907dab13395ab23d0955c238 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Fri, 15 Feb 2013 17:12:00 +0000
|
||||
Subject: [PATCH] Resolves: rhbz#895196 sc filter float a11y parent of itself
|
||||
loop/recurse
|
||||
|
||||
Change-Id: I3679e7cfcd32a78b40c6a7b803c92ff0abe6f32c
|
||||
---
|
||||
accessibility/source/helper/acc_factory.cxx | 8 +++++---
|
||||
vcl/inc/vcl/popupmenuwindow.hxx | 3 +++
|
||||
vcl/source/window/popupmenuwindow.cxx | 6 ++++++
|
||||
vcl/source/window/window.cxx | 12 +++++++++---
|
||||
4 files changed, 23 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/accessibility/source/helper/acc_factory.cxx b/accessibility/source/helper/acc_factory.cxx
|
||||
index dc16fe6..93f6bf5 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();
|
||||
diff --git a/vcl/inc/vcl/popupmenuwindow.hxx b/vcl/inc/vcl/popupmenuwindow.hxx
|
||||
index 57b7747..a5856dc 100644
|
||||
--- a/vcl/inc/vcl/popupmenuwindow.hxx
|
||||
+++ b/vcl/inc/vcl/popupmenuwindow.hxx
|
||||
@@ -34,6 +34,9 @@ public:
|
||||
sal_uInt16 GetMenuStackLevel() const;
|
||||
void SetMenuStackLevel( sal_uInt16 nLevel );
|
||||
bool IsPopupMenu() const;
|
||||
+
|
||||
+ //determine if a given window is an activated PopupMenuFloatingWindow
|
||||
+ static bool isPopupMenu(const Window *pWindow);
|
||||
};
|
||||
|
||||
#endif
|
||||
diff --git a/vcl/source/window/popupmenuwindow.cxx b/vcl/source/window/popupmenuwindow.cxx
|
||||
index e5e773a..7a03794 100644
|
||||
--- a/vcl/source/window/popupmenuwindow.cxx
|
||||
+++ b/vcl/source/window/popupmenuwindow.cxx
|
||||
@@ -67,4 +67,10 @@ bool PopupMenuFloatingWindow::IsPopupMenu() const
|
||||
return mpImplData->mnMenuStackLevel != ::std::numeric_limits<sal_uInt16>::max();
|
||||
}
|
||||
|
||||
+bool PopupMenuFloatingWindow::isPopupMenu(const Window *pWindow)
|
||||
+{
|
||||
+ const PopupMenuFloatingWindow* pChild = dynamic_cast<const PopupMenuFloatingWindow*>(pWindow);
|
||||
+ return pChild && pChild->IsPopupMenu();
|
||||
+}
|
||||
+
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
|
||||
index 6767fde..7ddb6b1 100644
|
||||
--- a/vcl/source/window/window.cxx
|
||||
+++ b/vcl/source/window/window.cxx
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "vcl/unowrap.hxx"
|
||||
#include "vcl/gdimtf.hxx"
|
||||
#include "vcl/pdfextoutdevdata.hxx"
|
||||
+#include "vcl/popupmenuwindow.hxx"
|
||||
#include "vcl/lazydelete.hxx"
|
||||
#include "vcl/virdev.hxx"
|
||||
|
||||
@@ -8601,10 +8602,15 @@ Window* Window::GetAccessibleParentWindow() const
|
||||
pWorkWin = pWorkWin->mpWindowImpl->mpNext;
|
||||
pParent = pWorkWin;
|
||||
}
|
||||
- // If this a floating window which has a native boarder window, this one should be reported as
|
||||
- // accessible parent
|
||||
+ // If this is a floating window which has a native border window, then that border should be reported as
|
||||
+ // the accessible parent, unless the floating window is a PopupMenuFloatingWindow
|
||||
+ //
|
||||
+ // The logic here has to match that of AccessibleFactory::createAccessibleContext in
|
||||
+ // accessibility/source/helper/acc_factory.cxx to avoid PopupMenuFloatingWindow
|
||||
+ // becoming a11y parents of themselves
|
||||
else if( GetType() == WINDOW_FLOATINGWINDOW &&
|
||||
- mpWindowImpl->mpBorderWindow && mpWindowImpl->mpBorderWindow->mpWindowImpl->mbFrame)
|
||||
+ mpWindowImpl->mpBorderWindow && mpWindowImpl->mpBorderWindow->mpWindowImpl->mbFrame &&
|
||||
+ !PopupMenuFloatingWindow::isPopupMenu(this))
|
||||
{
|
||||
pParent = mpWindowImpl->mpBorderWindow;
|
||||
}
|
||||
--
|
||||
1.8.1.2
|
||||
|
@ -47,7 +47,7 @@ Summary: Free Software Productivity Suite
|
||||
Name: libreoffice
|
||||
Epoch: 1
|
||||
Version: %{libo_version}.3
|
||||
Release: 6%{?libo_prerelease}%{?dist}
|
||||
Release: 7%{?libo_prerelease}%{?dist}
|
||||
License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and Artistic and MPLv2.0
|
||||
Group: Applications/Productivity
|
||||
URL: http://www.documentfoundation.org/develop
|
||||
@ -258,6 +258,7 @@ Patch22: 0001-Resolves-rhbz-910176-cannot-select-directory-with-gn.patch
|
||||
Patch23: 0001-Work-around-problem-with-boost-shared_array-NULL-cto.patch
|
||||
Patch24: 0001-fix-compile-for-change-to-boost-1.53.0-declaring-sma.patch
|
||||
Patch25: 0001-fdo-60491-scp2-always-package-emboleobj-library-on-n.patch
|
||||
Patch26: 0001-Resolves-rhbz-895196-sc-filter-float-a11y-parent-of-.patch
|
||||
|
||||
%define instdir %{_libdir}
|
||||
%define baseinstdir %{instdir}/libreoffice
|
||||
@ -1006,6 +1007,7 @@ mv -f redhat.soc extras/source/palettes/standard.soc
|
||||
%patch23 -p1 -b .Work-around-problem-with-boost-shared_array-NULL-cto.patch
|
||||
%patch24 -p1 -b .fix-compile-for-change-to-boost-1.53.0-declaring-sma.patch
|
||||
%patch25 -p1 -b .fdo-60491-scp2-always-package-emboleobj-library-on-n.patch
|
||||
%patch26 -p1 -b .rhbz-895196-sc-filter-float-a11y-parent-of-.patch
|
||||
|
||||
# TODO: check this
|
||||
# these are horribly incomplete--empty translations and copied english
|
||||
@ -2073,6 +2075,9 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Feb 19 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.0.0.3-7
|
||||
- Resolves: rhbz#895196 sc filter float a11y parent of itself
|
||||
|
||||
* Tue Feb 19 2013 David Tardon <dtardon@redhat.com> - 1:4.0.0.3-6
|
||||
- Resolves: rhbz#911896 add Kazakh localization
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user