chart2/source/controller/accessibility/AccessibleChartElement.cxx | 23 +------ chart2/source/controller/accessibility/AccessibleChartElement.hxx | 3 chart2/source/controller/accessibility/AccessibleTextHelper.cxx | 15 ---- chart2/source/controller/inc/AccessibleTextHelper.hxx | 9 +- chart2/source/controller/inc/ChartController.hxx | 32 +++------- chart2/source/controller/main/ChartController.cxx | 32 ---------- chart2/source/controller/main/ChartController_TextEdit.cxx | 11 +-- chart2/source/inc/servicenames.hxx | 4 - 8 files changed, 28 insertions(+), 101 deletions(-)
New commits: commit 21af3e5b5df02747691f08c453407d0abfc91242 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Sat Sep 2 14:19:55 2023 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sat Sep 2 21:14:18 2023 +0200 use more concrete type in chart::AccessibleTextHelper Change-Id: I3ad20c37bb2009964cf20a1ee184b2674de82817 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156470 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/chart2/source/controller/accessibility/AccessibleChartElement.cxx b/chart2/source/controller/accessibility/AccessibleChartElement.cxx index cca038b5be94..209d282c2c77 100644 --- a/chart2/source/controller/accessibility/AccessibleChartElement.cxx +++ b/chart2/source/controller/accessibility/AccessibleChartElement.cxx @@ -18,6 +18,7 @@ */ #include "AccessibleChartElement.hxx" +#include <AccessibleTextHelper.hxx> #include <CharacterProperties.hxx> #include <ChartModel.hxx> #include <ChartController.hxx> @@ -86,29 +87,15 @@ void AccessibleChartElement::InitTextEdit() if( ! m_xTextHelper.is()) { // get hard reference - rtl::Reference< ::chart::ChartController > xSelSupp( GetInfo().m_xChartController ); - if( xSelSupp.is()) - { - m_xTextHelper.set( - xSelSupp->createInstance( CHART_ACCESSIBLE_TEXT_SERVICE_NAME ), uno::UNO_QUERY ); - } + rtl::Reference< ::chart::ChartController > xChartController( GetInfo().m_xChartController ); + if( xChartController.is()) + m_xTextHelper = xChartController->createAccessibleTextContext(); } if( !m_xTextHelper.is()) return; - try - { - Reference< lang::XInitialization > xInit( m_xTextHelper, uno::UNO_QUERY_THROW ); - Sequence< uno::Any > aArgs{ uno::Any(GetInfo().m_aOID.getObjectCID()), - uno::Any(Reference< XAccessible >( this )), - uno::Any(Reference< awt::XWindow >( GetInfo().m_xWindow )) }; - xInit->initialize( aArgs ); - } - catch( const uno::Exception & ) - { - DBG_UNHANDLED_EXCEPTION("chart2"); - } + m_xTextHelper->initialize( GetInfo().m_aOID.getObjectCID(), this, GetInfo().m_xWindow ); } // Interfaces diff --git a/chart2/source/controller/accessibility/AccessibleChartElement.hxx b/chart2/source/controller/accessibility/AccessibleChartElement.hxx index 944aa5fa822a..283efed69d80 100644 --- a/chart2/source/controller/accessibility/AccessibleChartElement.hxx +++ b/chart2/source/controller/accessibility/AccessibleChartElement.hxx @@ -27,6 +27,7 @@ namespace com::sun::star::awt { class XFont; } namespace chart { +class AccessibleTextHelper; /** Base class for all Chart Accessibility objects except the root node (see AccessibleChartView) @@ -93,7 +94,7 @@ public: private: bool m_bHasText; - css::uno::Reference< css::accessibility::XAccessibleContext > + rtl::Reference< ::chart::AccessibleTextHelper > m_xTextHelper; void InitTextEdit(); diff --git a/chart2/source/controller/accessibility/AccessibleTextHelper.cxx b/chart2/source/controller/accessibility/AccessibleTextHelper.cxx index 42cddcd36832..ed98cd296706 100644 --- a/chart2/source/controller/accessibility/AccessibleTextHelper.cxx +++ b/chart2/source/controller/accessibility/AccessibleTextHelper.cxx @@ -53,19 +53,10 @@ AccessibleTextHelper::~AccessibleTextHelper() { } -// ____ XInitialization ____ -void SAL_CALL AccessibleTextHelper::initialize( const Sequence< uno::Any >& aArguments ) +void AccessibleTextHelper::initialize( const OUString& aCID, + const Reference< XAccessible >& xEventSource, + const Reference< awt::XWindow >& xWindow ) { - OUString aCID; - Reference< XAccessible > xEventSource; - Reference< awt::XWindow > xWindow; - - if( aArguments.getLength() >= 3 ) - { - aArguments[0] >>= aCID; - aArguments[1] >>= xEventSource; - aArguments[2] >>= xWindow; - } OSL_ENSURE( !aCID.isEmpty(), "Empty CID" ); OSL_ENSURE( xEventSource.is(), "Empty Event Source" ); OSL_ENSURE( xWindow.is(), "Empty Window" ); diff --git a/chart2/source/controller/inc/AccessibleTextHelper.hxx b/chart2/source/controller/inc/AccessibleTextHelper.hxx index b73a62b428cd..937af7da05cc 100644 --- a/chart2/source/controller/inc/AccessibleTextHelper.hxx +++ b/chart2/source/controller/inc/AccessibleTextHelper.hxx @@ -20,8 +20,8 @@ #include <memory> #include <comphelper/compbase.hxx> -#include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/accessibility/XAccessibleContext.hpp> +#include <com/sun/star/awt/XWindow.hpp> // forward declaration of helper class from svx namespace accessibility @@ -37,7 +37,6 @@ class DrawViewWrapper; namespace impl { typedef comphelper::WeakComponentImplHelper< - css::lang::XInitialization, css::accessibility::XAccessibleContext > AccessibleTextHelper_Base; } @@ -49,7 +48,6 @@ public: explicit AccessibleTextHelper( DrawViewWrapper * pDrawViewWrapper ); virtual ~AccessibleTextHelper() override; - // ____ XInitialization ____ /** Must be called at least once for this helper class to work. mandatory parameter 0: type string. This is the CID that is used to find @@ -62,8 +60,9 @@ public: mandatory parameter 2: type awt::XWindow. The Window that shows the text currently. */ - virtual void SAL_CALL initialize( - const css::uno::Sequence< css::uno::Any >& aArguments ) override; + void initialize(const OUString& aCID, + const css::uno::Reference< css::accessibility::XAccessible >& xEventSource, + const css::uno::Reference< css::awt::XWindow >& xWindow ); // ____ XAccessibleContext ____ virtual sal_Int64 SAL_CALL getAccessibleChildCount() override; diff --git a/chart2/source/controller/inc/ChartController.hxx b/chart2/source/controller/inc/ChartController.hxx index 8da5a4bba13e..9e72e09ddbd9 100644 --- a/chart2/source/controller/inc/ChartController.hxx +++ b/chart2/source/controller/inc/ChartController.hxx @@ -37,7 +37,6 @@ #include <com/sun/star/frame/XController2.hpp> #include <com/sun/star/frame/XLayoutManagerListener.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <memory> #include <string_view> @@ -90,6 +89,7 @@ class ReferenceSizeProvider; class ViewElementListProvider; class Diagram; class AccessibleChartView; +class AccessibleTextHelper; enum ChartDrawMode { CHARTDRAW_INSERT, CHARTDRAW_SELECT }; @@ -102,7 +102,6 @@ class ChartController final : public ::cppu::WeakImplHelper < ,css::util::XCloseListener //(needed for communication with XModel) ,css::frame::XDispatch ,css::awt::XWindow //this is the Window Controller part of this Controller, that will be given to a Frame via setComponent - ,css::lang::XMultiServiceFactory ,css::util::XModifyListener ,css::util::XModeChangeListener ,css::frame::XLayoutManagerListener @@ -263,16 +262,6 @@ public: virtual void SAL_CALL removePaintListener( const css::uno::Reference< css::awt::XPaintListener >& xListener ) override; - // css::lang XMultiServiceFactory - virtual css::uno::Reference< css::uno::XInterface > SAL_CALL - createInstance( const OUString& aServiceSpecifier ) override; - virtual css::uno::Reference< css::uno::XInterface > SAL_CALL - createInstanceWithArguments( const OUString& ServiceSpecifier, - const css::uno::Sequence< - css::uno::Any >& Arguments ) override; - virtual css::uno::Sequence< OUString > SAL_CALL - getAvailableServiceNames() override; - // css::util::XModifyListener virtual void SAL_CALL modified( const css::lang::EventObject& aEvent ) override; @@ -319,6 +308,15 @@ public: css::uno::Reference< css::accessibility::XAccessible > CreateAccessible(); + /** Creates a helper accessibility class that must be initialized via initialize(). For + parameters see + + The returned object should not be used directly. Instead a proxy object + should use this helper to retrieve its children and add them to its own + children. + */ + rtl::Reference< ::chart::AccessibleTextHelper > createAccessibleTextContext(); + static bool isObjectDeleteable( const css::uno::Any& rSelection ); void setDrawMode( ChartDrawMode eMode ) { m_eDrawMode = eMode; } @@ -541,16 +539,6 @@ private: static const o3tl::sorted_vector< OUString >& impl_getAvailableCommands(); - /** Creates a helper accessibility class that must be initialized via XInitialization. For - parameters see - - The returned object should not be used directly. Instead a proxy object - should use this helper to retrieve its children and add them to its own - children. - */ - css::uno::Reference< css::accessibility::XAccessibleContext > - impl_createAccessibleTextContext(); - void impl_PasteGraphic( css::uno::Reference< css::graphic::XGraphic > const & xGraphic, const ::Point & aPosition ); void impl_PasteShapes( SdrModel* pModel ); diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx index 2a233aa5f851..7e33f4b0ccef 100644 --- a/chart2/source/controller/main/ChartController.cxx +++ b/chart2/source/controller/main/ChartController.cxx @@ -1424,38 +1424,6 @@ void ChartController::executeDispatch_MoveSeries( bool bForward ) } } -// ____ XMultiServiceFactory ____ -uno::Reference< uno::XInterface > SAL_CALL - ChartController::createInstance( const OUString& aServiceSpecifier ) -{ - uno::Reference< uno::XInterface > xResult; - -#if !ENABLE_WASM_STRIP_ACCESSIBILITY - if( aServiceSpecifier == CHART_ACCESSIBLE_TEXT_SERVICE_NAME ) - xResult.set( impl_createAccessibleTextContext()); -#else - (void)aServiceSpecifier; -#endif - - return xResult; -} - -uno::Reference< uno::XInterface > SAL_CALL - ChartController::createInstanceWithArguments( - const OUString& ServiceSpecifier, - const uno::Sequence< uno::Any >& /* Arguments */ ) -{ - // ignore Arguments - return createInstance( ServiceSpecifier ); -} - -uno::Sequence< OUString > SAL_CALL - ChartController::getAvailableServiceNames() -{ - uno::Sequence< OUString > aServiceNames { CHART_ACCESSIBLE_TEXT_SERVICE_NAME }; - return aServiceNames; -} - // ____ XModifyListener ____ void SAL_CALL ChartController::modified( const lang::EventObject& /* aEvent */ ) diff --git a/chart2/source/controller/main/ChartController_TextEdit.cxx b/chart2/source/controller/main/ChartController_TextEdit.cxx index fbc8df4ed6b0..f2d21779ba69 100644 --- a/chart2/source/controller/main/ChartController_TextEdit.cxx +++ b/chart2/source/controller/main/ChartController_TextEdit.cxx @@ -215,16 +215,13 @@ void ChartController::executeDispatch_InsertSpecialCharacter() pOutlinerView->ShowCursor(); } -uno::Reference< css::accessibility::XAccessibleContext > - ChartController::impl_createAccessibleTextContext() +rtl::Reference< ::chart::AccessibleTextHelper > + ChartController::createAccessibleTextContext() { #if !ENABLE_WASM_STRIP_ACCESSIBILITY - uno::Reference< css::accessibility::XAccessibleContext > xResult( - new AccessibleTextHelper( m_pDrawViewWrapper.get() )); - - return xResult; + return new AccessibleTextHelper( m_pDrawViewWrapper.get() ); #else - return uno::Reference< css::accessibility::XAccessibleContext >(); + return {}; #endif } diff --git a/chart2/source/inc/servicenames.hxx b/chart2/source/inc/servicenames.hxx index b9f0bb554458..48fbbffd370d 100644 --- a/chart2/source/inc/servicenames.hxx +++ b/chart2/source/inc/servicenames.hxx @@ -50,8 +50,4 @@ inline constexpr OUStringLiteral CHART_CHARTAPIWRAPPER_IMPLEMENTATION_NAME inline constexpr OUStringLiteral CHART_CHARTAPIWRAPPER_SERVICE_NAME = u"com.sun.star.chart2.ChartDocumentWrapper"; -// accessibility -inline constexpr OUStringLiteral CHART_ACCESSIBLE_TEXT_SERVICE_NAME - = u"com.sun.star.accessibility.AccessibleTextComponent"; - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */