From 6fc44c59263a19b6697de980c70e085f0f2922c4 Mon Sep 17 00:00:00 2001 From: Jan-Arve Saether Date: Wed, 11 Apr 2012 07:58:20 +0200 Subject: Minor cleanup of the header file. Move inline implementations to iaccessible2.cpp. Makes it easier to read and navigate the source code. Change-Id: I8da44ba0d40395356f612ff6b3ce2a808105838a Reviewed-by: Mark Brand --- .../platforms/windows/accessible/iaccessible2.cpp | 68 +++++++++++++++++- .../platforms/windows/accessible/iaccessible2.h | 80 +++------------------- 2 files changed, 78 insertions(+), 70 deletions(-) (limited to 'src/plugins/platforms') diff --git a/src/plugins/platforms/windows/accessible/iaccessible2.cpp b/src/plugins/platforms/windows/accessible/iaccessible2.cpp index be680e7d48..ddab3cb0f2 100644 --- a/src/plugins/platforms/windows/accessible/iaccessible2.cpp +++ b/src/plugins/platforms/windows/accessible/iaccessible2.cpp @@ -114,6 +114,68 @@ HRESULT STDMETHODCALLTYPE AccessibleApplication::get_toolkitVersion(/* [retval][ } +/**************************************************************\ + * AccessibleRelation * + **************************************************************/ +AccessibleRelation::AccessibleRelation(const QList &targets, + QAccessible::Relation relation) + : m_targets(targets), m_relation(relation), m_ref(1) +{ + Q_ASSERT(m_targets.count()); +} + +/* IUnknown */ +HRESULT STDMETHODCALLTYPE AccessibleRelation::QueryInterface(REFIID id, LPVOID *iface) +{ + *iface = 0; + if (id == IID_IUnknown) + *iface = (IUnknown*)this; + + if (*iface) { + AddRef(); + return S_OK; + } + + return E_NOINTERFACE; +} + +ULONG STDMETHODCALLTYPE AccessibleRelation::AddRef() +{ + return ++m_ref; +} + +ULONG STDMETHODCALLTYPE AccessibleRelation::Release() +{ + if (!--m_ref) { + delete this; + return 0; + } + return m_ref; +} + +/* IAccessibleRelation */ +HRESULT STDMETHODCALLTYPE AccessibleRelation::get_relationType( + /* [retval][out] */ BSTR *relationType) +{ + *relationType = relationToBSTR(m_relation); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE AccessibleRelation::get_localizedRelationType( + /* [retval][out] */ BSTR *localizedRelationType) +{ + // Who ever needs this??? + *localizedRelationType = relationToBSTR(m_relation); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE AccessibleRelation::get_nTargets( + /* [retval][out] */ long *nTargets) +{ + // ### always one target + *nTargets = m_targets.count(); + return S_OK; +} /*! \internal @@ -140,7 +202,7 @@ HRESULT STDMETHODCALLTYPE AccessibleRelation::get_target( (see "Special Consideration when using Arrays", in Accessible2.idl) */ HRESULT STDMETHODCALLTYPE AccessibleRelation::get_targets( - /* [in] */ long maxTargets, // Hmmm, ignore ??? + /* [in] */ long maxTargets, /* [length_is][size_is][out] */ IUnknown **targets, /* [retval][out] */ long *nTargets) { @@ -215,6 +277,10 @@ HRESULT STDMETHODCALLTYPE QWindowsIA2Accessible::QueryInterface(REFIID id, LPVOI return hr; } + +/* Note that IUnknown is inherited from several interfaces. Therefore we must reimplement all its + functions in the concrete class to avoid ambiguity. +*/ ULONG STDMETHODCALLTYPE QWindowsIA2Accessible::AddRef() { return QWindowsMsaaAccessible::AddRef(); diff --git a/src/plugins/platforms/windows/accessible/iaccessible2.h b/src/plugins/platforms/windows/accessible/iaccessible2.h index b33562a900..0f9d3b3c41 100644 --- a/src/plugins/platforms/windows/accessible/iaccessible2.h +++ b/src/plugins/platforms/windows/accessible/iaccessible2.h @@ -298,85 +298,27 @@ private: /**************************************************************\ - * IAccessibleRelation * + * AccessibleRelation * **************************************************************/ -struct AccessibleRelation : public IAccessibleRelation +class AccessibleRelation : public IAccessibleRelation { +public: AccessibleRelation(const QList &targets, - QAccessible::Relation relation) - : m_targets(targets), m_relation(relation), m_ref(1) - { - Q_ASSERT(m_targets.count()); - } - + QAccessible::Relation relation); virtual ~AccessibleRelation() {} /* IUnknown */ - HRESULT STDMETHODCALLTYPE QueryInterface(REFIID id, LPVOID *iface) - { - *iface = 0; - if (id == IID_IUnknown) - *iface = (IUnknown*)this; - - if (*iface) { - AddRef(); - return S_OK; - } - - return E_NOINTERFACE; - } - - ULONG STDMETHODCALLTYPE AddRef() - { - return ++m_ref; - } - - ULONG STDMETHODCALLTYPE Release() - { - if (!--m_ref) { - delete this; - return 0; - } - return m_ref; - } + HRESULT STDMETHODCALLTYPE QueryInterface(REFIID id, LPVOID *iface); + ULONG STDMETHODCALLTYPE AddRef(); + ULONG STDMETHODCALLTYPE Release(); /* IAccessibleRelation */ - HRESULT STDMETHODCALLTYPE get_relationType( - /* [retval][out] */ BSTR *relationType) - { - *relationType = relationToBSTR(m_relation); - return S_OK; - } - - HRESULT STDMETHODCALLTYPE get_localizedRelationType( - /* [retval][out] */ BSTR *localizedRelationType) - { - // Who ever needs this??? - *localizedRelationType = relationToBSTR(m_relation); - return S_OK; - } - - HRESULT STDMETHODCALLTYPE get_nTargets( - /* [retval][out] */ long *nTargets) - { - // ### always one target - *nTargets = m_targets.count(); - return S_OK; - } - + HRESULT STDMETHODCALLTYPE get_relationType(BSTR *relationType); + HRESULT STDMETHODCALLTYPE get_localizedRelationType(BSTR *localizedRelationType); + HRESULT STDMETHODCALLTYPE get_nTargets(long *nTargets); HRESULT STDMETHODCALLTYPE get_target(long targetIndex, IUnknown **target); - - - /*! - \internal - Client allocates and deallocates \a targets array - (see "Special Consideration when using Arrays", in Accessible2.idl) - */ - HRESULT STDMETHODCALLTYPE get_targets( - /* [in] */ long maxTargets, // Hmmm, ignore ??? - /* [length_is][size_is][out] */ IUnknown **targets, - /* [retval][out] */ long *nTargets); + HRESULT STDMETHODCALLTYPE get_targets(long maxTargets, IUnknown **targets, long *nTargets); private: static BSTR relationToBSTR(QAccessible::Relation relation) -- cgit v1.2.3