summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-11-29 22:39:33 +0100
committerMichael Stahl <mstahl@redhat.com>2013-12-03 20:41:01 +0100
commitdcbf2c405870bdf8d7f94e1ea64c91ce685c22e4 (patch)
tree5adee12d9bead9c248ecd2b6cef6019ed507a6e7
parent97e4c624024dc2afbbbcfe13caf4470908c95390 (diff)
winaccessibility: remove global g_acc_manager
It is possible to retrieve it via the AccTopWindowListener. Change-Id: I6cc5ab25bc937d0d9f4de54a1bed09a76ce27491 (cherry picked from commit fabca7370e22f96ae041dc179475b35c87ac53ec)
-rw-r--r--winaccessibility/inc/AccObjectManagerAgent.hxx9
-rw-r--r--winaccessibility/inc/AccObjectWinManager.hxx2
-rw-r--r--winaccessibility/inc/AccTopWindowListener.hxx2
-rw-r--r--winaccessibility/inc/g_msacc.hxx27
-rw-r--r--winaccessibility/source/service/AccObjectManagerAgent.cxx22
-rw-r--r--winaccessibility/source/service/AccObjectWinManager.cxx33
-rw-r--r--winaccessibility/source/service/AccTopWindowListener.cxx6
-rw-r--r--winaccessibility/source/service/msaaservice_impl.cxx7
8 files changed, 33 insertions, 75 deletions
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 <boost/scoped_ptr.hpp>
+
#include <com/sun/star/accessibility/XAccessible.hpp>
-#endif
struct IMAccessible;
struct IAccessible;
@@ -37,7 +37,7 @@ class AccObjectManagerAgent
{
private:
- AccObjectWinManager* pWinManager;
+ boost::scoped_ptr<AccObjectWinManager> 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<sal_Int64>(pWinManager->Get_ToATInterface(
+ static_cast<HWND>(reinterpret_cast<void*>(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 4bcc8dfec140..8559e2b65782 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<sal_Int64>(g_acc_manager->Get_ToATInterface(
- static_cast<HWND>(reinterpret_cast<void*>(hWnd)), lParam, wParam));
-}
-
/**
* constructor
* @param Agent The agent kept in all listeners,it's the sole interface by which
@@ -89,22 +72,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
* @return
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 e5e1231c0df3..c9ea14cfdbc0 100644
--- a/winaccessibility/source/service/msaaservice_impl.cxx
+++ b/winaccessibility/source/service/msaaservice_impl.cxx
@@ -41,7 +41,6 @@ using namespace ::com::sun::star::accessibility;
using namespace ::com::sun::star::awt;
#include "AccTopWindowListener.hxx"
-#include "g_msacc.hxx"
namespace my_sc_impl
{
@@ -95,7 +94,11 @@ throw (RuntimeException)
{
SolarMutexGuard g;
- return GetMSComPtr( hWnd, lParam, wParam );
+ if (!m_pTopWindowListener.is())
+ {
+ return 0;
+ }
+ return m_pTopWindowListener->GetMSComPtr(hWnd, lParam, wParam);
}
/**