vcl/source/window/dockmgr.cxx |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

New commits:
commit dc0706cabfe39ddb6ea23d60ccfb756f2b9e6efb
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Wed Mar 15 17:00:27 2023 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Wed Mar 22 13:13:10 2023 +0000

    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.wegh...@posteo.de>
    (cherry picked from commit c379f1b978c3ad4578c130675c1e0a82c70823c0)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148958
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

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)

Reply via email to