summaryrefslogtreecommitdiff
path: root/toolkit
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2023-08-17 13:15:46 +0100
committerMichael Weghorn <m.weghorn@posteo.de>2023-08-18 06:05:23 +0200
commit2cd1408dd7d6688357257f4a58a8b467628b1884 (patch)
tree8922434ebc91b4dcaba7eb4250b8cafd4a3b7583 /toolkit
parent4d27d2c5f9d83112b6db9b6234e2ae617ffced22 (diff)
tdf#156561 a11y: Create VCLXTopWindow peer for border win frame
If a border window is a "native frame", i.e. a top level window, then also create a `VCLXTopWindow` for it instead of just a simple `VCLXWindow`. This also addresses another cause why the Calc autofilter popup would not be announced by the NVDA screen reader before commit dc0706cabfe39ddb6ea23d60ccfb756f2b9e6efb Author: Michael Weghorn <m.weghorn@posteo.de> Date: Wed Mar 15 17:00:27 2023 +0100 tdf#140762 tdf#152671 Make dock win visible before showing popup For winaccessibility, an accessible event listener is registered for an object when either `AccTopWindowListener::windowOpened` gets an event with the top level window set or the parent of the window sends an `AccessibleEventId::CHILD` event for the child object. In case of the autofilter popup in Calc, the top-level border window of the work window (created and set in `WorkWindow::ImplInit` and retrieved via `Window::GetFrameWeld` in `ScGridWindow::LaunchAutoFilterMenu`) is set as the parent window of the popup, but since it is a top-level window and was so far not considered as such due to its peer/component interface not implementing `XTopWindow` (s. `Window::IsTopWindow` and the corresponding check in `VCLXToolkit::callTopWindowListeners`), it would not have any accessible listener set, and thus no child event for its new popup child would be sent to the winaccessibility layer. Therefore, no accessible events would be sent for the popup and it's children either, resulting in NVDA not announcing any focus changes, etc. With this change in place, NVDA announces focused items in the auto filter popup even with a revert of the above-mentioned commit (and follow-up commits), except for submenu entries (which still suffer from another problem that will be addressed separately). Change-Id: I69c6066127c8b853a27cc1f692f139572541f8eb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155800 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Diffstat (limited to 'toolkit')
-rw-r--r--toolkit/source/helper/unowrapper.cxx7
1 files changed, 7 insertions, 0 deletions
diff --git a/toolkit/source/helper/unowrapper.cxx b/toolkit/source/helper/unowrapper.cxx
index e2aaa55dbe63..82b4dd17338a 100644
--- a/toolkit/source/helper/unowrapper.cxx
+++ b/toolkit/source/helper/unowrapper.cxx
@@ -91,6 +91,13 @@ static rtl::Reference<VCLXWindow> CreateXWindow( vcl::Window const * pWindow )
case WindowType::HEADERBAR: return new VCLXHeaderBar;
+ case WindowType::BORDERWINDOW:
+ {
+ if (pWindow->IsNativeFrame())
+ return new VCLXTopWindow;
+ return new VCLXWindow(true);
+ }
+
// case WindowType::FIXEDLINE:
// case WindowType::FIXEDBITMAP:
// case WindowType::DATEBOX: