From fabca7370e22f96ae041dc179475b35c87ac53ec Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Fri, 29 Nov 2013 22:39:33 +0100 Subject: winaccessibility: remove global g_acc_manager It is possible to retrieve it via the AccTopWindowListener. Change-Id: I6cc5ab25bc937d0d9f4de54a1bed09a76ce27491 --- winaccessibility/inc/AccObjectManagerAgent.hxx | 9 ++++-- winaccessibility/inc/AccObjectWinManager.hxx | 2 -- winaccessibility/inc/AccTopWindowListener.hxx | 2 ++ winaccessibility/inc/g_msacc.hxx | 27 ------------------ .../source/service/AccObjectManagerAgent.cxx | 22 +++++++++------ .../source/service/AccObjectWinManager.cxx | 33 ---------------------- .../source/service/AccTopWindowListener.cxx | 6 ++++ .../source/service/msaaservice_impl.cxx | 7 +++-- 8 files changed, 33 insertions(+), 75 deletions(-) delete mode 100644 winaccessibility/inc/g_msacc.hxx diff --git a/winaccessibility/inc/AccObjectManagerAgent.hxx b/winaccessibility/inc/AccObjectManagerAgent.hxx index fd61c4047afb..5aa9f81e4abb 100644 --- a/winaccessibility/inc/AccObjectManagerAgent.hxx +++ b/winaccessibility/inc/AccObjectManagerAgent.hxx @@ -20,9 +20,9 @@ #ifndef __ACCOBJECTMANAGERAGENT_HXX #define __ACCOBJECTMANAGERAGENT_HXX -#ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLE_HPP_ +#include + #include -#endif struct IMAccessible; struct IAccessible; @@ -37,7 +37,7 @@ class AccObjectManagerAgent { private: - AccObjectWinManager* pWinManager; + boost::scoped_ptr pWinManager; public: @@ -96,6 +96,9 @@ public: bool IsTopWinAcc( com::sun::star::accessibility::XAccessible* pXAcc ); bool IsStateManageDescendant(com::sun::star::accessibility::XAccessible* pXAcc); + + sal_Int64 Get_ToATInterface(sal_Int64 hWnd, sal_Int64 lParam, sal_Int64 wParam); + }; #endif diff --git a/winaccessibility/inc/AccObjectWinManager.hxx b/winaccessibility/inc/AccObjectWinManager.hxx index f58a858d7c2d..84bfca64d879 100644 --- a/winaccessibility/inc/AccObjectWinManager.hxx +++ b/winaccessibility/inc/AccObjectWinManager.hxx @@ -97,8 +97,6 @@ public: void DeleteAccObj( com::sun::star::accessibility::XAccessible* pXAcc ); void DeleteChildrenAccObj(com::sun::star::accessibility::XAccessible* pAccObj); - static AccObjectWinManager* CreateAccObjectWinManagerInstance(AccObjectManagerAgent* Agent); - sal_Bool NotifyAccEvent( com::sun::star::accessibility::XAccessible* pXAcc,short state = 0 ); LPARAM Get_ToATInterface(HWND hWnd, long lParam, WPARAM wParam); diff --git a/winaccessibility/inc/AccTopWindowListener.hxx b/winaccessibility/inc/AccTopWindowListener.hxx index 9babd67d9065..278232003585 100644 --- a/winaccessibility/inc/AccTopWindowListener.hxx +++ b/winaccessibility/inc/AccTopWindowListener.hxx @@ -59,6 +59,8 @@ public: virtual void AddAllListeners(com::sun::star::accessibility::XAccessible* pAccessible,com::sun::star::accessibility::XAccessible* pParentXAcc,HWND pWND ); //for On-Demand load. virtual void HandleWindowOpened( com::sun::star::accessibility::XAccessible* pAccessible ); + + sal_Int64 GetMSComPtr(sal_Int64 hWnd, sal_Int64 lParam, sal_Int64 wParam); }; #endif diff --git a/winaccessibility/inc/g_msacc.hxx b/winaccessibility/inc/g_msacc.hxx deleted file mode 100644 index b9670cfa50bb..000000000000 --- a/winaccessibility/inc/g_msacc.hxx +++ /dev/null @@ -1,27 +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 . - */ - -#ifndef __G_MSACC_HXX -#define __G_MSACC_HXX - -extern sal_Int64 GetMSComPtr(sal_Int64 hWnd, sal_Int64 lParam, sal_Int64 wParam); - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/winaccessibility/source/service/AccObjectManagerAgent.cxx b/winaccessibility/source/service/AccObjectManagerAgent.cxx index 1c7636076027..d4f4dab66e55 100644 --- a/winaccessibility/source/service/AccObjectManagerAgent.cxx +++ b/winaccessibility/source/service/AccObjectManagerAgent.cxx @@ -30,19 +30,13 @@ using namespace com::sun::star::accessibility; * @param * @return */ -AccObjectManagerAgent::AccObjectManagerAgent(): - pWinManager(NULL) +AccObjectManagerAgent::AccObjectManagerAgent() + : pWinManager(new AccObjectWinManager(this)) { - if( pWinManager == NULL ) - { - pWinManager = AccObjectWinManager::CreateAccObjectWinManagerInstance(this); - } } AccObjectManagerAgent::~AccObjectManagerAgent() { - delete pWinManager; - pWinManager = NULL; } /** @@ -388,4 +382,16 @@ bool AccObjectManagerAgent::IsStateManageDescendant(XAccessible* pXAcc) return false; } +/** + * Implementation of interface XMSAAService's method getAccObjectPtr() + * that returns the corresponding COM interface with the MS event. + * @return Com interface. + */ +sal_Int64 AccObjectManagerAgent::Get_ToATInterface( + sal_Int64 hWnd, sal_Int64 lParam, sal_Int64 wParam) +{ + return static_cast(pWinManager->Get_ToATInterface( + static_cast(reinterpret_cast(hWnd)), lParam, wParam)); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/winaccessibility/source/service/AccObjectWinManager.cxx b/winaccessibility/source/service/AccObjectWinManager.cxx index cd51b7e37ebe..779f201d1639 100644 --- a/winaccessibility/source/service/AccObjectWinManager.cxx +++ b/winaccessibility/source/service/AccObjectWinManager.cxx @@ -53,23 +53,6 @@ using namespace com::sun::star::accessibility::AccessibleRole; using namespace com::sun::star::accessibility::AccessibleStateType; using namespace com::sun::star::uno; -AccObjectWinManager* g_acc_manager = NULL; - -/** - * Implementation of interface XMSAAService's method getAccObjectPtr() that return the - * corresponding com interface with the MS event. - * - * @param - * @return Com interface. - */ -sal_Int64 GetMSComPtr(sal_Int64 hWnd, sal_Int64 lParam, sal_Int64 wParam) -{ - if (!g_acc_manager) - return 0; - return static_cast(g_acc_manager->Get_ToATInterface( - static_cast(reinterpret_cast(hWnd)), lParam, wParam)); -} - /** * constructor * @param Agent The agent kept in all listeners,it's the sole interface by which @@ -88,22 +71,6 @@ AccObjectWinManager::AccObjectWinManager( AccObjectManagerAgent* Agent ): { } -/** - * Public method to produce manager - * @param Agent The agent kept in all listeners,it's the sole interface by which - * listener communicate with windows manager. - * @return - */ -AccObjectWinManager* AccObjectWinManager::CreateAccObjectWinManagerInstance( AccObjectManagerAgent* Agent ) -{ - if (!g_acc_manager) - { - g_acc_manager = new AccObjectWinManager( Agent ); - } - return g_acc_manager; -} - - /** * Destructor,clear all resource. * @param diff --git a/winaccessibility/source/service/AccTopWindowListener.cxx b/winaccessibility/source/service/AccTopWindowListener.cxx index ca8a1c01b606..db87f23f0bf5 100644 --- a/winaccessibility/source/service/AccTopWindowListener.cxx +++ b/winaccessibility/source/service/AccTopWindowListener.cxx @@ -255,4 +255,10 @@ void AccTopWindowListener::disposing( const ::com::sun::star::lang::EventObject& { } +sal_Int64 AccTopWindowListener::GetMSComPtr( + sal_Int64 hWnd, sal_Int64 lParam, sal_Int64 wParam) +{ + return accManagerAgent.Get_ToATInterface(hWnd, lParam, wParam); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/winaccessibility/source/service/msaaservice_impl.cxx b/winaccessibility/source/service/msaaservice_impl.cxx index 950ef9b66cae..219eaee4c255 100644 --- a/winaccessibility/source/service/msaaservice_impl.cxx +++ b/winaccessibility/source/service/msaaservice_impl.cxx @@ -42,7 +42,6 @@ using namespace ::com::sun::star::accessibility; using namespace ::com::sun::star::awt; #include "AccTopWindowListener.hxx" -#include "g_msacc.hxx" namespace my_sc_impl { @@ -96,7 +95,11 @@ throw (RuntimeException) { SolarMutexGuard g; - return GetMSComPtr( hWnd, lParam, wParam ); + if (!m_pTopWindowListener.is()) + { + return 0; + } + return m_pTopWindowListener->GetMSComPtr(hWnd, lParam, wParam); } /** -- cgit v1.2.3