solenv/clang-format/excludelist | 1 svx/source/accessibility/charmapacc.cxx | 1 svx/source/inc/charmapacc.hxx | 312 ++++++++++++++++---------------- 3 files changed, 160 insertions(+), 154 deletions(-)
New commits: commit 808734af9de79089e2da4369b8b07a477ff5b78c Author: Michael Weghorn <[email protected]> AuthorDate: Fri Jul 25 22:39:10 2025 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Sat Jul 26 00:25:16 2025 +0200 svx a11y: clang-format charmapacc.hxx This in particular gets rid of an extra level of indentation. Change-Id: Ib1f1bbd70d6fa973e99676a231b3a2b82b40176e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188370 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist index ac8c0b44e734..295b566c64ce 100644 --- a/solenv/clang-format/excludelist +++ b/solenv/clang-format/excludelist @@ -11327,7 +11327,6 @@ svx/source/inc/DefaultShapesPanel.hxx svx/source/inc/GraphCtlAccessibleContext.hxx svx/source/inc/ShapesUtil.hxx svx/source/inc/cell.hxx -svx/source/inc/charmapacc.hxx svx/source/inc/datalistener.hxx svx/source/inc/datanavi.hxx svx/source/inc/delayedevent.hxx diff --git a/svx/source/inc/charmapacc.hxx b/svx/source/inc/charmapacc.hxx index 61b10e49ad64..8ad86a7c6c2c 100644 --- a/svx/source/inc/charmapacc.hxx +++ b/svx/source/inc/charmapacc.hxx @@ -32,173 +32,179 @@ class SvxShowCharSet; namespace svx { - class SvxShowCharSetAcc; +class SvxShowCharSetAcc; - class SvxShowCharSetItemAcc; +class SvxShowCharSetItemAcc; - // - SvxShowCharSetItem - +// - SvxShowCharSetItem - - /** Simple struct to hold some information about the single items of the table. - */ - struct SvxShowCharSetItem +/** Simple struct to hold some information about the single items of the table. */ +struct SvxShowCharSetItem +{ + SvxShowCharSet& mrParent; + sal_uInt16 mnId; + OUString maText; + tools::Rectangle maRect; + rtl::Reference<SvxShowCharSetItemAcc> m_xItem; + SvxShowCharSetAcc* m_pParent; + + SvxShowCharSetItem(SvxShowCharSet& rParent, SvxShowCharSetAcc* _pParent, sal_uInt16 _nPos); + ~SvxShowCharSetItem(); + + const rtl::Reference<SvxShowCharSetItemAcc>& GetAccessible(); +}; + +// - SvxShowCharSetAcc - + +/** The table implementation of the vcl control. */ + +class SvxShowCharSetAcc final + : public cppu::ImplInheritanceHelper<::comphelper::OAccessibleSelectionHelper, + css::accessibility::XAccessibleTable> +{ + ::std::vector<rtl::Reference<SvxShowCharSetItemAcc>> m_aChildren; + SvxShowCharSet* m_pParent; // the vcl control + virtual void SAL_CALL disposing() override; + +public: + SvxShowCharSetAcc(SvxShowCharSet* pParent); + + // XAccessibleComponent + virtual void SAL_CALL grabFocus() override; + virtual css::uno::Reference<css::accessibility::XAccessible> + SAL_CALL getAccessibleAtPoint(const css::awt::Point& aPoint) override; + + // OAccessible + // XAccessibleContext - still waiting to be overwritten + virtual sal_Int64 SAL_CALL getAccessibleChildCount() override; + virtual css::uno::Reference<css::accessibility::XAccessible> + SAL_CALL getAccessibleChild(sal_Int64 i) override; + virtual css::uno::Reference<css::accessibility::XAccessible> + SAL_CALL getAccessibleParent() override; + virtual sal_Int16 SAL_CALL getAccessibleRole() override; + virtual OUString SAL_CALL getAccessibleDescription() override; + virtual OUString SAL_CALL getAccessibleName() override; + virtual css::uno::Reference<css::accessibility::XAccessibleRelationSet> + SAL_CALL getAccessibleRelationSet() override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet() override; + + virtual sal_Int32 SAL_CALL getForeground() override; + virtual sal_Int32 SAL_CALL getBackground() override; + + // XAccessibleTable + virtual sal_Int32 SAL_CALL getAccessibleRowCount() override; + virtual sal_Int32 SAL_CALL getAccessibleColumnCount() override; + virtual OUString SAL_CALL getAccessibleRowDescription(sal_Int32 nRow) override; + virtual OUString SAL_CALL getAccessibleColumnDescription(sal_Int32 nColumn) override; + virtual sal_Int32 SAL_CALL getAccessibleRowExtentAt(sal_Int32 nRow, sal_Int32 nColumn) override; + virtual sal_Int32 SAL_CALL getAccessibleColumnExtentAt(sal_Int32 nRow, + sal_Int32 nColumn) override; + virtual css::uno::Reference<css::accessibility::XAccessibleTable> + SAL_CALL getAccessibleRowHeaders() override; + virtual css::uno::Reference<css::accessibility::XAccessibleTable> + SAL_CALL getAccessibleColumnHeaders() override; + virtual css::uno::Sequence<sal_Int32> SAL_CALL getSelectedAccessibleRows() override; + virtual css::uno::Sequence<sal_Int32> SAL_CALL getSelectedAccessibleColumns() override; + virtual sal_Bool SAL_CALL isAccessibleRowSelected(sal_Int32 nRow) override; + virtual sal_Bool SAL_CALL isAccessibleColumnSelected(sal_Int32 nColumn) override; + virtual css::uno::Reference<css::accessibility::XAccessible> + SAL_CALL getAccessibleCellAt(sal_Int32 nRow, sal_Int32 nColumn) override; + virtual css::uno::Reference<css::accessibility::XAccessible> + SAL_CALL getAccessibleCaption() override; + virtual css::uno::Reference<css::accessibility::XAccessible> + SAL_CALL getAccessibleSummary() override; + virtual sal_Bool SAL_CALL isAccessibleSelected(sal_Int32 nRow, sal_Int32 nColumn) override; + virtual sal_Int64 SAL_CALL getAccessibleIndex(sal_Int32 nRow, sal_Int32 nColumn) override; + virtual sal_Int32 SAL_CALL getAccessibleRow(sal_Int64 nChildIndex) override; + virtual sal_Int32 SAL_CALL getAccessibleColumn(sal_Int64 nChildIndex) override; + + void fireEvent(const sal_Int16 _nEventId, const css::uno::Any& _rOldValue, + const css::uno::Any& _rNewValue) { - SvxShowCharSet& mrParent; - sal_uInt16 mnId; - OUString maText; - tools::Rectangle maRect; - rtl::Reference<SvxShowCharSetItemAcc> m_xItem; - SvxShowCharSetAcc* m_pParent; + NotifyAccessibleEvent(_nEventId, _rOldValue, _rNewValue); + } + + void clearCharSetControl() { m_pParent = nullptr; } - SvxShowCharSetItem( SvxShowCharSet& rParent, SvxShowCharSetAcc* _pParent, sal_uInt16 _nPos ); - ~SvxShowCharSetItem(); +private: + virtual ~SvxShowCharSetAcc() override; - const rtl::Reference< SvxShowCharSetItemAcc > & GetAccessible(); - }; + // OCommonAccessibleSelection + // return if the specified child is visible => watch for special ChildIndexes (ACCESSIBLE_SELECTION_CHILD_xxx) + virtual bool implIsSelected(sal_Int64 nAccessibleChildIndex) override; + // select the specified child => watch for special ChildIndexes (ACCESSIBLE_SELECTION_CHILD_xxx) + virtual void implSelect(sal_Int64 nAccessibleChildIndex, bool bSelect) override; - // - SvxShowCharSetAcc - + // OAccessible + /// implements the calculation of the bounding rectangle - still waiting to be overwritten + virtual css::awt::Rectangle implGetBounds() override; +}; - /** The table implementation of the vcl control. - */ +// - SvxShowCharSetItemAcc - - class SvxShowCharSetAcc final - : public cppu::ImplInheritanceHelper<::comphelper::OAccessibleSelectionHelper, - css::accessibility::XAccessibleTable> +/** The child implementation of the table. */ +class SvxShowCharSetItemAcc final + : public cppu::ImplInheritanceHelper<::comphelper::OAccessible, + css::accessibility::XAccessibleAction> +{ +private: + SvxShowCharSetItem* mpParent; + + virtual ~SvxShowCharSetItemAcc() override; + + // OAccessible + /// implements the calculation of the bounding rectangle - still waiting to be overwritten + virtual css::awt::Rectangle implGetBounds() override; + +public: + SvxShowCharSetItemAcc(SvxShowCharSetItem* pParent); + + void ParentDestroyed(); + + // XAccessibleComponent + virtual void SAL_CALL grabFocus() override; + virtual css::uno::Reference<css::accessibility::XAccessible> + SAL_CALL getAccessibleAtPoint(const css::awt::Point& aPoint) override; + + // OAccessible + // XAccessibleContext - still waiting to be overwritten + virtual sal_Int64 SAL_CALL getAccessibleChildCount() override; + virtual css::uno::Reference<css::accessibility::XAccessible> + SAL_CALL getAccessibleChild(sal_Int64 i) override; + virtual css::uno::Reference<css::accessibility::XAccessible> + SAL_CALL getAccessibleParent() override; + virtual sal_Int16 SAL_CALL getAccessibleRole() override; + virtual OUString SAL_CALL getAccessibleDescription() override; + virtual OUString SAL_CALL getAccessibleName() override; + virtual css::uno::Reference<css::accessibility::XAccessibleRelationSet> + SAL_CALL getAccessibleRelationSet() override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet() override; + + virtual sal_Int32 SAL_CALL getForeground() override { - ::std::vector< rtl::Reference< SvxShowCharSetItemAcc > > m_aChildren; - SvxShowCharSet* m_pParent; // the vcl control - virtual void SAL_CALL disposing() override; - public: - SvxShowCharSetAcc(SvxShowCharSet* pParent); - - // XAccessibleComponent - virtual void SAL_CALL grabFocus( ) override; - virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const css::awt::Point& aPoint ) override; - - // OAccessible - // XAccessibleContext - still waiting to be overwritten - virtual sal_Int64 SAL_CALL getAccessibleChildCount() override; - virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int64 i ) override; - virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) override; - virtual sal_Int16 SAL_CALL getAccessibleRole( ) override; - virtual OUString SAL_CALL getAccessibleDescription( ) override; - virtual OUString SAL_CALL getAccessibleName( ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override; - virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override; - - virtual sal_Int32 SAL_CALL getForeground( ) override; - virtual sal_Int32 SAL_CALL getBackground( ) override; - - // XAccessibleTable - virtual sal_Int32 SAL_CALL getAccessibleRowCount( ) override; - virtual sal_Int32 SAL_CALL getAccessibleColumnCount( ) override; - virtual OUString SAL_CALL getAccessibleRowDescription( sal_Int32 nRow ) override; - virtual OUString SAL_CALL getAccessibleColumnDescription( sal_Int32 nColumn ) override; - virtual sal_Int32 SAL_CALL getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) override; - virtual sal_Int32 SAL_CALL getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleRowHeaders( ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleColumnHeaders( ) override; - virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleRows( ) override; - virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleColumns( ) override; - virtual sal_Bool SAL_CALL isAccessibleRowSelected( sal_Int32 nRow ) override; - virtual sal_Bool SAL_CALL isAccessibleColumnSelected( sal_Int32 nColumn ) override; - virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn ) override; - virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCaption( ) override; - virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleSummary( ) override; - virtual sal_Bool SAL_CALL isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn ) override; - virtual sal_Int64 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) override; - virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int64 nChildIndex ) override; - virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int64 nChildIndex ) override; - - - void fireEvent( - const sal_Int16 _nEventId, - const css::uno::Any& _rOldValue, - const css::uno::Any& _rNewValue - ) - { - NotifyAccessibleEvent(_nEventId,_rOldValue,_rNewValue); - } - - void clearCharSetControl() { m_pParent = nullptr; } - private: - - virtual ~SvxShowCharSetAcc() override; - - // OCommonAccessibleSelection - // return if the specified child is visible => watch for special ChildIndexes (ACCESSIBLE_SELECTION_CHILD_xxx) - virtual bool - implIsSelected( sal_Int64 nAccessibleChildIndex ) override; - - // select the specified child => watch for special ChildIndexes (ACCESSIBLE_SELECTION_CHILD_xxx) - virtual void - implSelect( sal_Int64 nAccessibleChildIndex, bool bSelect ) override; - - // OAccessible - /// implements the calculation of the bounding rectangle - still waiting to be overwritten - virtual css::awt::Rectangle implGetBounds( ) override; - }; - - - // - SvxShowCharSetItemAcc - - - /** The child implementation of the table. - */ - class SvxShowCharSetItemAcc final - : public cppu::ImplInheritanceHelper<::comphelper::OAccessible, - css::accessibility::XAccessibleAction> + return mpParent->m_pParent->getForeground(); + } + virtual sal_Int32 SAL_CALL getBackground() override { - private: - SvxShowCharSetItem* mpParent; - - virtual ~SvxShowCharSetItemAcc() override; - - // OAccessible - /// implements the calculation of the bounding rectangle - still waiting to be overwritten - virtual css::awt::Rectangle implGetBounds( ) override; - public: - - SvxShowCharSetItemAcc( SvxShowCharSetItem* pParent ); - - void ParentDestroyed(); - - // XAccessibleComponent - virtual void SAL_CALL grabFocus( ) override; - virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const css::awt::Point& aPoint ) override; - - // OAccessible - // XAccessibleContext - still waiting to be overwritten - virtual sal_Int64 SAL_CALL getAccessibleChildCount( ) override; - virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int64 i ) override; - virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) override; - virtual sal_Int16 SAL_CALL getAccessibleRole( ) override; - virtual OUString SAL_CALL getAccessibleDescription( ) override; - virtual OUString SAL_CALL getAccessibleName( ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override; - virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override; - - virtual sal_Int32 SAL_CALL getForeground( ) override { return mpParent->m_pParent->getForeground(); } - virtual sal_Int32 SAL_CALL getBackground( ) override { return mpParent->m_pParent->getBackground(); } - - // XAccessibleAction - virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) override; - virtual sal_Bool SAL_CALL doAccessibleAction ( sal_Int32 nIndex ) override; - virtual OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) override; - - - void fireEvent( - const sal_Int16 _nEventId, - const css::uno::Any& _rOldValue, - const css::uno::Any& _rNewValue - ) - { - NotifyAccessibleEvent(_nEventId,_rOldValue,_rNewValue); - } - }; + return mpParent->m_pParent->getBackground(); + } + + // XAccessibleAction + virtual sal_Int32 SAL_CALL getAccessibleActionCount() override; + virtual sal_Bool SAL_CALL doAccessibleAction(sal_Int32 nIndex) override; + virtual OUString SAL_CALL getAccessibleActionDescription(sal_Int32 nIndex) override; + virtual css::uno::Reference<css::accessibility::XAccessibleKeyBinding> + SAL_CALL getAccessibleActionKeyBinding(sal_Int32 nIndex) override; + + void fireEvent(const sal_Int16 _nEventId, const css::uno::Any& _rOldValue, + const css::uno::Any& _rNewValue) + { + NotifyAccessibleEvent(_nEventId, _rOldValue, _rNewValue); + } +}; } - #endif // INCLUDED_SVX_SOURCE_INC_CHARMAPACC_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit b9cb53878b4ede5a1ee4b4afee5306ffc4776c33 Author: Michael Weghorn <[email protected]> AuthorDate: Fri Jul 25 22:33:34 2025 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Sat Jul 26 00:25:08 2025 +0200 svx a11y: Dispose SvxShowCharSetItemAcc The item was never disposed, resulting in this assertion seen on shutdown with the qt6 VCL plugin after using the Special Characters dialog started via the item in the Writer toolbar: soffice.bin: /home/michi/development/git/libreoffice/comphelper/source/misc/accessibleeventnotifier.cxx:142: bool (anonymous namespace)::implLookupClient(const AccessibleEventNotifier::TClientId, ClientMap::iterator &): Assertion `rClients.end() != rPos && "AccessibleEventNotifier::implLookupClient: invalid client id " "(did you register your client?)!"' failed. Backtrace: 1 __pthread_kill_implementation pthread_kill.c 44 0x7f3feec9e95c 2 __pthread_kill_internal pthread_kill.c 89 0x7f3feec9e9ff 3 __GI_raise raise.c 26 0x7f3feec49cc2 4 __GI_abort abort.c 73 0x7f3feec324ac 5 __assert_fail_base assert.c 118 0x7f3feec32420 6 (anonymous namespace)::implLookupClient accessibleeventnotifier.cxx 140 0x7f3fed4d8b38 7 comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing accessibleeventnotifier.cxx 185 0x7f3fed4d8fa8 8 comphelper::OAccessible::disposing OAccessible.cxx 58 0x7f3fed4d595d 9 cppu::WeakComponentImplHelperBase::dispose implbase.cxx 104 0x7f3fecf3dd50 10 cppu::PartialWeakComponentImplHelper<com::sun::star::accessibility::XAccessible, com::sun::star::accessibility::XAccessibleContext2, com::sun::star::accessibility::XAccessibleEventBroadcaster, com::sun::star::accessibility::XAccessibleExtendedComponent>::dispose compbase.hxx 90 0x7f3fe9a4d375 11 cppu::WeakComponentImplHelperBase::release implbase.cxx 79 0x7f3fecf3da77 12 cppu::PartialWeakComponentImplHelper<com::sun::star::accessibility::XAccessible, com::sun::star::accessibility::XAccessibleContext2, com::sun::star::accessibility::XAccessibleEventBroadcaster, com::sun::star::accessibility::XAccessibleExtendedComponent>::release compbase.hxx 86 0x7f3fe9a6f1f5 13 cppu::ImplInheritanceHelper<comphelper::OAccessible, com::sun::star::accessibility::XAccessibleAction>::release implbase.hxx 171 0x7f3fe9ad6615 14 com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessible>::~Reference Reference.hxx 114 0x7f3fdd5496fa 15 QtAccessibleWidget::~QtAccessibleWidget QtAccessibleWidget.hxx 41 0x7f3fdd5628ed 16 QtAccessibleWidget::~QtAccessibleWidget QtAccessibleWidget.hxx 41 0x7f3fdd562999 17 QAccessibleCache::deleteInterface qaccessiblecache.cpp 197 0x7f3fdbb148b8 18 QAccessibleCache::~QAccessibleCache qaccessiblecache.cpp 44 0x7f3fdbb146e8 19 QAccessibleCache::~QAccessibleCache qaccessiblecache.cpp 42 0x7f3fdbb148fd 20 cleanupAccessibleCache qaccessiblecache.cpp 37 0x7f3fdbb14997 21 qt_call_post_routines qcoreapplication.cpp 359 0x7f3fdc6508e2 22 QApplication::~QApplication qapplication.cpp 666 0x7f3fda5e1154 23 QApplication::~QApplication qapplication.cpp 662 0x7f3fda5e14fd 24 std::default_delete<QApplication>::operator() unique_ptr.h 93 0x7f3fdd615068 25 std::__uniq_ptr_impl<QApplication, std::default_delete<QApplication>>::reset unique_ptr.h 205 0x7f3fdd616a58 26 std::unique_ptr<QApplication, std::default_delete<QApplication>>::reset unique_ptr.h 504 0x7f3fdd60e10d 27 QtInstance::~QtInstance QtInstance.cxx 322 0x7f3fdd6058b4 28 QtInstance::~QtInstance QtInstance.cxx 319 0x7f3fdd6059a9 29 DestroySalInstance salplug.cxx 361 0x7f3fe5f9a1b4 30 DeInitVCL svmain.cxx 597 0x7f3fe6095ac4 31 ImplSVMain svmain.cxx 241 0x7f3fe609410f 32 SVMain svmain.cxx 248 0x7f3fe6095ba9 33 soffice_main sofficemain.cxx 122 0x7f3feefa2d0a 34 sal_main main.c 51 0x55e6eb4379fd 35 main main.c 49 0x55e6eb4379d7 Change-Id: I1bf379aaddb090fab238c596d121ab08bcfaf08a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188369 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/svx/source/accessibility/charmapacc.cxx b/svx/source/accessibility/charmapacc.cxx index cf74a68428dc..11011c7017a6 100644 --- a/svx/source/accessibility/charmapacc.cxx +++ b/svx/source/accessibility/charmapacc.cxx @@ -51,6 +51,7 @@ SvxShowCharSetItem::~SvxShowCharSetItem() if ( m_xItem.is() ) { m_xItem->ParentDestroyed(); + m_xItem->dispose(); m_xItem.clear(); } }
