From 5e80fbb94ef291c9e825a9e7927f4e3ae062d885 Mon Sep 17 00:00:00 2001 From: Michael Weghorn Date: Mon, 16 Sep 2024 12:09:45 +0100 Subject: [PATCH] wina11y: Merge CAccComponent{,Base} Merge the `CAccComponentBase` class into its only subclass `CAccComponent`. While at it, make the `m_xComponent` member private, which was previously protected for no reason anyway. Change-Id: I029348c51aefd1b7cdc3db68bac6abc31de15d61 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173445 Reviewed-by: Michael Weghorn Tested-by: Jenkins --- winaccessibility/Library_uacccom.mk | 1 - .../source/UAccCOM/AccComponent.cxx | 103 +++++++++++- .../source/UAccCOM/AccComponent.h | 14 +- .../source/UAccCOM/AccComponentBase.cxx | 153 ------------------ .../source/UAccCOM/AccComponentBase.h | 54 ------- 5 files changed, 110 insertions(+), 215 deletions(-) delete mode 100644 winaccessibility/source/UAccCOM/AccComponentBase.cxx delete mode 100644 winaccessibility/source/UAccCOM/AccComponentBase.h diff --git a/winaccessibility/Library_uacccom.mk b/winaccessibility/Library_uacccom.mk index 0fb07814b2f9..c240338f69dd 100644 --- a/winaccessibility/Library_uacccom.mk +++ b/winaccessibility/Library_uacccom.mk @@ -31,7 +31,6 @@ $(eval $(call gb_Library_add_exception_objects,UAccCOM,\ winaccessibility/source/UAccCOM/AccAction \ winaccessibility/source/UAccCOM/AccActionBase \ winaccessibility/source/UAccCOM/AccComponent \ - winaccessibility/source/UAccCOM/AccComponentBase \ winaccessibility/source/UAccCOM/AccEditableText \ winaccessibility/source/UAccCOM/AccHyperLink \ winaccessibility/source/UAccCOM/AccHypertext \ diff --git a/winaccessibility/source/UAccCOM/AccComponent.cxx b/winaccessibility/source/UAccCOM/AccComponent.cxx index e1e7af6abfdb..9eee07ae4437 100644 --- a/winaccessibility/source/UAccCOM/AccComponent.cxx +++ b/winaccessibility/source/UAccCOM/AccComponent.cxx @@ -24,6 +24,17 @@ #include #include "AccComponent.h" +#include +#include +#include + +using namespace com::sun::star::accessibility; +using namespace com::sun::star::uno; + +CAccComponent::CAccComponent() {} + +CAccComponent::~CAccComponent() {} + /** * Returns the location of the upper left corner of the object's bounding * box relative to the parent. @@ -32,7 +43,25 @@ */ COM_DECLSPEC_NOTHROW STDMETHODIMP CAccComponent::get_locationInParent(long* x, long* y) { - return CAccComponentBase::get_locationInParent(x, y); + SolarMutexGuard g; + + try + { + if (x == nullptr || y == nullptr) + return E_INVALIDARG; + + if (!m_xComponent.is()) + return E_FAIL; + + const css::awt::Point& pt = m_xComponent->getLocation(); + *x = pt.X; + *y = pt.Y; + return S_OK; + } + catch (...) + { + return E_FAIL; + } } /** @@ -42,7 +71,25 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP CAccComponent::get_locationInParent(long* x, l */ COM_DECLSPEC_NOTHROW STDMETHODIMP CAccComponent::get_foreground(IA2Color* foreground) { - return CAccComponentBase::get_foreground(foreground); + SolarMutexGuard g; + + try + { + if (foreground == nullptr) + return E_INVALIDARG; + + if (!m_xComponent.is()) + { + return E_FAIL; + } + *foreground = static_cast(m_xComponent->getForeground()); + + return S_OK; + } + catch (...) + { + return E_FAIL; + } } /** @@ -52,7 +99,57 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP CAccComponent::get_foreground(IA2Color* foregr */ COM_DECLSPEC_NOTHROW STDMETHODIMP CAccComponent::get_background(IA2Color* background) { - return CAccComponentBase::get_background(background); + SolarMutexGuard g; + + try + { + if (background == nullptr) + return E_INVALIDARG; + + if (!m_xComponent.is()) + { + return E_FAIL; + } + *background = static_cast(m_xComponent->getBackground()); + + return S_OK; + } + catch (...) + { + return E_FAIL; + } +} + +/** + * Override of IUNOXWrapper. + * + * @param pXInterface the pointer of UNO interface. + */ +COM_DECLSPEC_NOTHROW STDMETHODIMP CAccComponent::put_XInterface(hyper pXInterface) +{ + // internal IUNOXWrapper - no mutex meeded + + try + { + CUNOXWrapper::put_XInterface(pXInterface); + + if (pUNOInterface == nullptr) + return E_FAIL; + + Reference pRContext = pUNOInterface->getAccessibleContext(); + if (!pRContext.is()) + { + return E_FAIL; + } + Reference pRXI(pRContext, UNO_QUERY); + m_xComponent = pRXI; + + return S_OK; + } + catch (...) + { + return E_FAIL; + } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/winaccessibility/source/UAccCOM/AccComponent.h b/winaccessibility/source/UAccCOM/AccComponent.h index fda595ce8a0f..75ea31381406 100644 --- a/winaccessibility/source/UAccCOM/AccComponent.h +++ b/winaccessibility/source/UAccCOM/AccComponent.h @@ -20,12 +20,11 @@ #pragma once #include "Resource.h" // main symbols +#include "UNOXWrapper.h" #include #include #include -#include "UNOXWrapper.h" -#include "AccComponentBase.h" /** * CAccComponent implements IAccessibleComponent interface. @@ -33,10 +32,11 @@ class ATL_NO_VTABLE CAccComponent : public CComObjectRoot, public CComCoClass, public IAccessibleComponent, - public CAccComponentBase + public CUNOXWrapper { public: - CAccComponent() {} + CAccComponent(); + virtual ~CAccComponent(); BEGIN_COM_MAP(CAccComponent) COM_INTERFACE_ENTRY(IAccessibleComponent) @@ -77,6 +77,12 @@ public: // Returns the background color of this object. STDMETHOD(get_background)(IA2Color* background) override; + + // Override of IUNOXWrapper. + STDMETHOD(put_XInterface)(hyper pXInterface) override; + +private: + css::uno::Reference m_xComponent; }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/winaccessibility/source/UAccCOM/AccComponentBase.cxx b/winaccessibility/source/UAccCOM/AccComponentBase.cxx deleted file mode 100644 index 626c4de90c5f..000000000000 --- a/winaccessibility/source/UAccCOM/AccComponentBase.cxx +++ /dev/null @@ -1,153 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include "stdafx.h" -#include "AccComponentBase.h" -#include -#include -#include -#include "MAccessible.h" - -using namespace com::sun::star::accessibility; -using namespace com::sun::star::uno; - -// Construction/Destruction - -CAccComponentBase::CAccComponentBase() {} - -CAccComponentBase::~CAccComponentBase() {} - -/** - * Returns the location of the upper left corner of the object's bounding - * box relative to the parent. - * - * @param Location the upper left corner of the object's bounding box. - */ -COM_DECLSPEC_NOTHROW STDMETHODIMP CAccComponentBase::get_locationInParent(long* x, long* y) -{ - SolarMutexGuard g; - - try - { - if (x == nullptr || y == nullptr) - return E_INVALIDARG; - - if (!m_xComponent.is()) - return E_FAIL; - - const css::awt::Point& pt = m_xComponent->getLocation(); - *x = pt.X; - *y = pt.Y; - return S_OK; - } - catch (...) - { - return E_FAIL; - } -} - -/** - * Returns the foreground color of this object. - * - * @param Color the color of foreground. - */ -COM_DECLSPEC_NOTHROW STDMETHODIMP CAccComponentBase::get_foreground(IA2Color* foreground) -{ - SolarMutexGuard g; - - try - { - if (foreground == nullptr) - return E_INVALIDARG; - - if (!m_xComponent.is()) - { - return E_FAIL; - } - *foreground = static_cast(m_xComponent->getForeground()); - - return S_OK; - } - catch (...) - { - return E_FAIL; - } -} - -/** - * Returns the background color of this object. - * - * @param Color the color of background. - */ -COM_DECLSPEC_NOTHROW STDMETHODIMP CAccComponentBase::get_background(IA2Color* background) -{ - SolarMutexGuard g; - - try - { - if (background == nullptr) - return E_INVALIDARG; - - if (!m_xComponent.is()) - { - return E_FAIL; - } - *background = static_cast(m_xComponent->getBackground()); - - return S_OK; - } - catch (...) - { - return E_FAIL; - } -} - -/** - * Override of IUNOXWrapper. - * - * @param pXInterface the pointer of UNO interface. - */ -COM_DECLSPEC_NOTHROW STDMETHODIMP CAccComponentBase::put_XInterface(hyper pXInterface) -{ - // internal IUNOXWrapper - no mutex meeded - - try - { - CUNOXWrapper::put_XInterface(pXInterface); - - if (pUNOInterface == nullptr) - return E_FAIL; - - Reference pRContext = pUNOInterface->getAccessibleContext(); - if (!pRContext.is()) - { - return E_FAIL; - } - Reference pRXI(pRContext, UNO_QUERY); - m_xComponent = pRXI; - - return S_OK; - } - catch (...) - { - return E_FAIL; - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/winaccessibility/source/UAccCOM/AccComponentBase.h b/winaccessibility/source/UAccCOM/AccComponentBase.h deleted file mode 100644 index 137c5d99c4e9..000000000000 --- a/winaccessibility/source/UAccCOM/AccComponentBase.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -// AccComponentBase.h: interface for the CAccComponentBase class. - -#pragma once - -#include -#include -#include "UNOXWrapper.h" - -class ATL_NO_VTABLE CAccComponentBase : public CUNOXWrapper -{ -public: - CAccComponentBase(); - virtual ~CAccComponentBase(); - // IAccessibleComponent -public: - // IAccessibleComponent - - // Returns the location of the upper left corner of the object's bounding - // box relative to the parent. - STDMETHOD(get_locationInParent)(long* x, long* y); - - // Returns the foreground color of this object. - STDMETHOD(get_foreground)(IA2Color* foreground); - - // Returns the background color of this object. - STDMETHOD(get_background)(IA2Color* background); - - // Override of IUNOXWrapper. - STDMETHOD(put_XInterface)(hyper pXInterface) override; - -protected: - css::uno::Reference m_xComponent; -}; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */