diff options
author | Michael Weghorn <m.weghorn@posteo.de> | 2023-03-15 17:00:27 +0100 |
---|---|---|
committer | Michael Weghorn <m.weghorn@posteo.de> | 2023-03-16 06:43:30 +0000 |
commit | c379f1b978c3ad4578c130675c1e0a82c70823c0 (patch) | |
tree | 12a330150405aec4e7e87c2a7e88bdb8889e7707 | |
parent | 80d5d2eb70fd84e98cbe19cd4363d12d50ec31f6 (diff) |
tdf#140762 tdf#152671 Make dock win visible before showing popup
The fact that the docking window got hidden (in
`ImplPreparePopupMode`) and only shown again
after starting popup mode for the containing
floating window meant that the docking window
and its children were still invisible when
starting popup mode.
Therefore, they would also not be
considered/returned as accessible children
when listeners are registered for accessible
children in winaccessibility's
`AccTopWindowListener::AddAllListeners`.
As a consequence, no a11y events would be
sent when they receive keyboard focus and they
would not be announced by the NVDA screen reader.
Make them visible again *before* starting
popup mode for the floating window.
This e.g. makes NVDA announce popups in the toolbar
or the Calc autofilter dropdown.
Change-Id: I6953e4b491db4708ba30fb98173d13391d6e0461
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148933
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
-rw-r--r-- | vcl/source/window/dockmgr.cxx | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/vcl/source/window/dockmgr.cxx b/vcl/source/window/dockmgr.cxx index f836ff2f1cef..3ab98c596183 100644 --- a/vcl/source/window/dockmgr.cxx +++ b/vcl/source/window/dockmgr.cxx @@ -821,8 +821,8 @@ void ImplDockingWindowWrapper::StartPopupMode( ToolBox *pParentToolBox, FloatWin if( pParentToolBox->IsKeyEvent() ) nFlags |= FloatWinPopupFlags::GrabFocus; + GetWindow()->Show(true, ShowFlags::NoFocusChange | ShowFlags::NoActivate); mpFloatWin->StartPopupMode( pParentToolBox, nFlags ); - GetWindow()->Show(); if( pParentToolBox->IsKeyEvent() ) { @@ -839,8 +839,8 @@ void ImplDockingWindowWrapper::StartPopupMode( const tools::Rectangle& rRect, Fl return; ImplPreparePopupMode(); + GetWindow()->Show(true, ShowFlags::NoFocusChange | ShowFlags::NoActivate); mpFloatWin->StartPopupMode( rRect, nFlags ); - GetWindow()->Show(); } IMPL_LINK_NOARG(ImplDockingWindowWrapper, PopupModeEnd, FloatingWindow*, void) |