forked from amazingfate/loongoffice
Let VCLXAccessibleEdit::getAccessibleName take care
of returning the same accessible name as the combobox
parent for the combobox subedit instead of trying
to set the same name when that combobox child is
requested the first time.
This makes sure the name remains in sync, and prevents
trying to get the combobox a11y name while a dialog
containing it might still be in the process of getting
constructed by VclBuilder, in which case e.g. the
AccessibleRelation::LABELLED_BY relation that
gets used in Window::getDefaultAccessibleName
may not have been set. That relation e.g. gets
set if a label has the combobox set as its
"mnemonic-widget" in a .ui file.
The previous logic was triggering an assert
when opening the "Fonts" page in the "Tools" -> "Options"
dialog or using the search feature in that dialog on Windows
with an AT (like NVDA) active when trying to set the a11y
name of the "font2" combobox's entry
(UI file: cui/uiconfig/ui/optfontspage.ui):
Assertion failed: GetChildCount() == 4 || pWindowImpl->mbInDispose, file .../vcl/source/window/layout.cxx, line 1945
Backtrace:
1 abort ucrtbase 0x7ffad46e286e
2 get_wpgmptr ucrtbase 0x7ffad46e426e
3 get_wpgmptr ucrtbase 0x7ffad46e4165
4 wassert ucrtbase 0x7ffad46e44f1
5 VclScrolledWindow::get_child layout.cxx 1945 0x7ffa88f67e35
6 nextLogicalChildOfParent dialog.cxx 139 0x7ffa88f147cf
7 nextLogicalChildOfParent dialog.cxx 157 0x7ffa88f14884
8 nextLogicalChildOfParent dialog.cxx 157 0x7ffa88f14884
9 ImplGetSubChildWindow dlgctrl.cxx 137 0x7ffa88f197e1
10 ImplGetChildWindow dlgctrl.cxx 151 0x7ffa88f18dae
11 ImplGetNextWindow dlgctrl.cxx 180 0x7ffa88f19600
12 ImplFindDlgCtrlWindow dlgctrl.cxx 362 0x7ffa88f18a2b
13 vcl::ImplGetLabeledBy legacyaccessibility.cxx 122 0x7ffa88e65437
14 vcl::Window::getLegacyNonLayoutAccessibleRelationLabeledBy legacyaccessibility.cxx 178 0x7ffa88e657ac
15 vcl::Window::GetAccessibleRelationLabeledBy accessibility.cxx 604 0x7ffa88e6193a
16 vcl::Window::getDefaultAccessibleName accessibility.cxx 470 0x7ffa88e63c73
17 vcl::Window::GetAccessibleName accessibility.cxx 441 0x7ffa88e614ba
18 vcl::Window::SetAccessibleName accessibility.cxx 427 0x7ffa88e623bc
19 VCLXAccessibleBox::getAccessibleChild vclxaccessiblebox.cxx 319 0x7ffa853e3e02
20 AccObjectWinManager::InsertChildrenAccObj AccObjectWinManager.cxx 536 0x7ffa855b2ed1
21 AccEventListener::HandleChildChangedEvent AccEventListener.cxx 109 0x7ffa855b9593
22 AccEventListener::notifyEvent AccEventListener.cxx 64 0x7ffa855ba6ef
23 AccContainerEventListener::notifyEvent AccContainerEventListener.cxx 95 0x7ffa855bdfbc
24 comphelper::AccessibleEventNotifier::addEvent accessibleeventnotifier.cxx 256 0x7ffa916598c0
25 comphelper::OCommonAccessibleComponent::NotifyAccessibleEvent accessiblecomponenthelper.cxx 127 0x7ffa9165071e
26 VCLXAccessibleComponent::ProcessWindowChildEvent vclxaccessiblecomponent.cxx 165 0x7ffa8b7e6029
27 VCLXAccessibleComponent::WindowChildEventListener vclxaccessiblecomponent.cxx 124 0x7ffa8b7e6d62
28 VCLXAccessibleComponent::LinkStubWindowChildEventListener vclxaccessiblecomponent.cxx 114 0x7ffa8b7e5ee6
29 Link<VclWindowEvent &,void>::Call link.hxx 111 0x7ffa88f3bf43
30 vcl::Window::CallEventListeners event.cxx 300 0x7ffa88f3c57c
31 vcl::Window::ImplSetReallyVisible window.cxx 1331 0x7ffa8904394d
32 vcl::Window::ImplSetReallyVisible window.cxx 1344 0x7ffa89043a1d
33 vcl::Window::Show window.cxx 2336 0x7ffa89047671
34 vcl::Window::Show window.cxx 2349 0x7ffa8904776e
35 vcl::Window::set_property window2.cxx 1537 0x7ffa8902d4b3
36 ComboBox::set_property combobox.cxx 1553 0x7ffa89097521
37 BuilderUtils::set_properties builder.cxx 2192 0x7ffa88ef13c5
38 VclBuilder::insertObject builder.cxx 2469 0x7ffa88ee18df
39 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleObject widgetbuilder.hxx 230 0x7ffa88e23d54
40 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleChild widgetbuilder.hxx 127 0x7ffa88e22c30
41 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleObject widgetbuilder.hxx 234 0x7ffa88e23dff
42 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleChild widgetbuilder.hxx 127 0x7ffa88e22c30
43 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleObject widgetbuilder.hxx 234 0x7ffa88e23dff
44 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleChild widgetbuilder.hxx 127 0x7ffa88e22c30
45 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleObject widgetbuilder.hxx 234 0x7ffa88e23dff
46 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleChild widgetbuilder.hxx 127 0x7ffa88e22c30
47 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleObject widgetbuilder.hxx 234 0x7ffa88e23dff
48 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleChild widgetbuilder.hxx 127 0x7ffa88e22c30
49 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::processUIFile widgetbuilder.hxx 70 0x7ffa88e24b4a
50 VclBuilder::VclBuilder builder.cxx 523 0x7ffa88ea53be
51 SalInstanceBuilder::SalInstanceBuilder salvtables.cxx 7088 0x7ffa895da3ff
52 std::make_unique<SalInstanceBuilder,vcl::Window * &,rtl::OUString const &,rtl::OUString const &,0> memory 3434 0x7ffa895d44c8
53 SalInstance::CreateBuilder salvtables.cxx 7470 0x7ffa895ef18e
54 Application::CreateBuilder builder.cxx 198 0x7ffa88ebed2a
55 BuilderPage::BuilderPage weldutils.cxx 28 0x7ffa89684128
56 SfxTabPage::SfxTabPage tabdlg.cxx 137 0x7ffa8cd5f0e5
57 SvxFontSubstTabPage::SvxFontSubstTabPage fontsubs.cxx 36 0x7ffa8372d1cd
58 std::make_unique<SvxFontSubstTabPage,weld::Container * &,weld::DialogController * &,SfxItemSet const &,0> memory 3434 0x7ffa8372cdbf
59 SvxFontSubstTabPage::Create fontsubs.cxx 146 0x7ffa8372f692
60 CreateGeneralTabPage treeopt.cxx 289 0x7ffa8383199a
61 OfaTreeOptionsDialog::SelectHdl_Impl treeopt.cxx 1317 0x7ffa838372e7
62 OfaTreeOptionsDialog::ShowPageHdl_Impl treeopt.cxx 623 0x7ffa83837f11
63 OfaTreeOptionsDialog::LinkStubShowPageHdl_Impl treeopt.cxx 620 0x7ffa83834366
64 Link<weld::TreeView &,void>::Call link.hxx 111 0x7ffa88ebdf13
65 weld::TreeView::signal_changed weld.hxx 969 0x7ffa88ef210f
66 SalInstanceTreeView::SelectHdl salvtables.cxx 5304 0x7ffa895f4b39
67 SalInstanceTreeView::LinkStubSelectHdl salvtables.cxx 5299 0x7ffa895f38c6
68 Link<SvTreeListBox *,void>::Call link.hxx 111 0x7ffa88ebe413
69 SvTreeListBox::SelectHdl treelistbox.cxx 454 0x7ffa892ba7a1
70 SvTreeListBox::Select treelistbox.cxx 2128 0x7ffa892ba514
71 SvImpLBox::SetCursor svimpbox.cxx 617 0x7ffa892d05e8
72 ImpLBSelEng::SetCursorAtPoint svimpbox.cxx 2596 0x7ffa892d08a9
73 SelectionEngine::SelMouseButtonDown seleng.cxx 174 0x7ffa88fd0071
74 SvImpLBox::MouseButtonDown svimpbox.cxx 2016 0x7ffa892cc580
75 SvTreeListBox::MouseButtonDown treelistbox.cxx 2277 0x7ffa892b71e2
76 ImplHandleMouseEvent winproc.cxx 708 0x7ffa89059867
77 ImplHandleSalMouseButtonDown winproc.cxx 2338 0x7ffa8905afef
78 ImplWindowFrameProc winproc.cxx 2683 0x7ffa8905ca47
79 SalFrame::CallCallback salframe.hxx 312 0x7ffa88e1ee56
80 ImplHandleMouseMsg salframe.cxx 3335 0x7ffa85c270bf
81 SalFrameWndProc salframe.cxx 5987 0x7ffa85c2de7d
82 SalFrameWndProcW salframe.cxx 6342 0x7ffa85c2ec60
83 CallWindowProcW USER32 0x7ffad61cef5c
84 DispatchMessageW USER32 0x7ffad61ce684
85 ImplSalDispatchMessage salinst.cxx 475 0x7ffa85b8cf98
86 ImplSalYield salinst.cxx 552 0x7ffa85b8d6bd
87 WinSalInstance::DoYield salinst.cxx 581 0x7ffa85b8cc61
88 ImplYield svapp.cxx 385 0x7ffa89656364
89 Application::Yield svapp.cxx 474 0x7ffa89659fe2
90 Dialog::Execute dialog.cxx 1077 0x7ffa88f0c017
91 SalInstanceDialog::run salvtables.cxx 1882 0x7ffa896149af
92 weld::DialogController::run weld.hxx 2691 0x7ffa88eef436
93 OfaTreeOptionsDialog::run treeopt.cxx 2514 0x7ffa83841dd2
94 CuiAbstractController_Impl::Execute dlgfact.cxx 144 0x7ffa837085c8
95 SfxApplication::OfaExec_Impl appserv.cxx 1641 0x7ffa8cb36506
96 SfxStubSfxApplicationOfaExec_Impl sfxslots.hxx 1307 0x7ffa8cb10165
97 SfxDispatcher::Call_Impl dispatch.cxx 257 0x7ffa8cc1f4ae
98 SfxDispatcher::Execute_ dispatch.cxx 754 0x7ffa8cc2260f
99 SfxBindings::Execute_Impl bindings.cxx 1062 0x7ffa8cc0086d
100 SfxDispatchController_Impl::dispatch unoctitm.cxx 736 0x7ffa8cc93caa
101 SfxOfficeDispatch::dispatch unoctitm.cxx 254 0x7ffa8cc945b0
102 framework::MenuBarManager::Select menubarmanager.cxx 821 0x7ffa8d8574d4
103 framework::MenuBarManager::LinkStubSelect menubarmanager.cxx 776 0x7ffa8d855796
104 Link<Menu *,bool>::Call link.hxx 111 0x7ffa88f77d88
105 Menu::Select menu.cxx 360 0x7ffa88f83e19
106 Menu::ImplCallSelect menu.cxx 2152 0x7ffa88f7c761
107 Menu::LinkStubImplCallSelect menu.cxx 2148 0x7ffa88f82366
108 Link<void *,void>::Call link.hxx 111 0x7ffa890529b3
109 ImplHandleUserEvent winproc.cxx 2288 0x7ffa8905ba97
110 ImplWindowFrameProc winproc.cxx 2850 0x7ffa8905d256
111 SalFrame::CallCallback salframe.hxx 312 0x7ffa88e1ee56
112 ImplHandleUserEvent salframe.cxx 4471 0x7ffa85c28fab
113 SalFrameWndProc salframe.cxx 6236 0x7ffa85c2e654
114 SalFrameWndProcW salframe.cxx 6342 0x7ffa85c2ec60
115 CallWindowProcW USER32 0x7ffad61cef5c
116 DispatchMessageW USER32 0x7ffad61ce684
117 ImplSalDispatchMessage salinst.cxx 475 0x7ffa85b8cf98
118 ImplSalYield salinst.cxx 506 0x7ffa85b8d09b
119 WinSalInstance::DoYield salinst.cxx 581 0x7ffa85b8cc61
120 ImplYield svapp.cxx 385 0x7ffa89656364
121 Application::Yield svapp.cxx 474 0x7ffa89659fe2
122 Application::Execute svapp.cxx 361 0x7ffa89653aa6
123 desktop::Desktop::Main app.cxx 1679 0x7ffa9336887f
124 ImplSVMain svmain.cxx 228 0x7ffa8966b310
125 SVMain svmain.cxx 247 0x7ffa8966baf2
126 soffice_main sofficemain.cxx 121 0x7ffa933b86f4
127 sal_main main.c 51 0x7ff64a491013
128 main main.c 49 0x7ff64a49105a
129 __scrt_common_main_seh exe_common.inl 288 0x7ff64a491344
130 BaseThreadInitThunk KERNEL32 0x7ffad5c07374
131 RtlUserThreadStart ntdll 0x7ffad679cc91
Change-Id: I3be8a8e4acd1c87fdfa495c755fd947e9a11b9aa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177314
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>