X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2aefc52854807189d44dfe6a9513b99932cabc51..9e82cf9876d744d4bd79ffbe5ee023c4ff5fc135:/src/msw/ole/access.cpp?ds=sidebyside diff --git a/src/msw/ole/access.cpp b/src/msw/ole/access.cpp index d75b8abc43..23e633be8e 100644 --- a/src/msw/ole/access.cpp +++ b/src/msw/ole/access.cpp @@ -47,6 +47,7 @@ #include #include +#include #include "wx/msw/ole/oleutils.h" @@ -369,7 +370,7 @@ wxIAccessible::wxIAccessible(wxAccessible *pAccessible) STDMETHODIMP wxIAccessible::accHitTest(long xLeft, long yLeft, VARIANT* pVarID) { - wxLogDebug("accHitTest"); + wxLogTrace(wxT("access"), "accHitTest"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; @@ -434,7 +435,7 @@ STDMETHODIMP wxIAccessible::accHitTest(long xLeft, long yLeft, VARIANT* pVarID) STDMETHODIMP wxIAccessible::accLocation ( long* pxLeft, long* pyTop, long* pcxWidth, long* pcyHeight, VARIANT varID) { - wxLogDebug("accLocation"); + wxLogTrace(wxT("access"), "accLocation"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; @@ -484,11 +485,11 @@ STDMETHODIMP wxIAccessible::accNavigate ( long navDir, VARIANT varStart, VARIANT wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; - wxLogDebug(wxString(wxT("accNavigate for ")) + m_pAccessible->GetWindow()->GetClassInfo()->GetClassName()); + wxLogTrace(wxT("access"), wxString(wxT("accNavigate for ")) + m_pAccessible->GetWindow()->GetClassInfo()->GetClassName()); if ((varStart.vt != VT_I4 && varStart.vt != VT_EMPTY) || varStart.vt < 0) { - wxLogDebug("Invalid arg for accNavigate"); + wxLogTrace(wxT("access"), "Invalid arg for accNavigate"); return E_INVALIDARG; } @@ -542,30 +543,30 @@ STDMETHODIMP wxIAccessible::accNavigate ( long navDir, VARIANT varStart, VARIANT break; default: { - wxLogDebug(wxT("Unknown NAVDIR symbol")); + wxLogTrace(wxT("access"), wxT("Unknown NAVDIR symbol")); break; } } - wxLogDebug(navStr); + wxLogTrace(wxT("access"), navStr); wxAccStatus status = m_pAccessible->Navigate(navDirWX, varStart.lVal, & elementId, & elementObject); if (status == wxACC_FAIL) { - wxLogDebug("wxAccessible::Navigate failed"); + wxLogTrace(wxT("access"), "wxAccessible::Navigate failed"); return E_FAIL; } if (status == wxACC_FALSE) { - wxLogDebug("wxAccessible::Navigate found no object in this direction"); + wxLogTrace(wxT("access"), "wxAccessible::Navigate found no object in this direction"); return S_FALSE; } if (status == wxACC_NOT_IMPLEMENTED) { - wxLogDebug("Navigate not implemented"); + wxLogTrace(wxT("access"), "Navigate not implemented"); // Try to use child object directly. if (varStart.vt == VT_I4 && varStart.lVal > 0) @@ -588,41 +589,41 @@ STDMETHODIMP wxIAccessible::accNavigate ( long navDir, VARIANT varStart, VARIANT { if (elementObject) { - wxLogDebug("Getting wxIAccessible and calling QueryInterface for Navigate"); + wxLogTrace(wxT("access"), "Getting wxIAccessible and calling QueryInterface for Navigate"); wxIAccessible* objectIA = elementObject->GetIAccessible(); if (!objectIA) { - wxLogDebug("No wxIAccessible"); + wxLogTrace(wxT("access"), "No wxIAccessible"); return E_FAIL; } HRESULT hResult = objectIA->QueryInterface(IID_IDispatch, (LPVOID*) & pVarEnd->pdispVal); if (hResult != S_OK) { - wxLogDebug("QueryInterface failed"); + wxLogTrace(wxT("access"), "QueryInterface failed"); return E_FAIL; } - wxLogDebug("Called QueryInterface for Navigate"); + wxLogTrace(wxT("access"), "Called QueryInterface for Navigate"); pVarEnd->vt = VT_DISPATCH; return S_OK; } else if (elementId > 0) { - wxLogDebug("Returning element id from Navigate"); + wxLogTrace(wxT("access"), "Returning element id from Navigate"); pVarEnd->vt = VT_I4; pVarEnd->lVal = elementId; return S_OK; } else { - wxLogDebug("No object in accNavigate"); + wxLogTrace(wxT("access"), "No object in accNavigate"); pVarEnd->vt = VT_EMPTY; return S_FALSE; } } - wxLogDebug("Failing Navigate"); + wxLogTrace(wxT("access"), "Failing Navigate"); return E_NOTIMPL; } @@ -631,14 +632,14 @@ STDMETHODIMP wxIAccessible::accNavigate ( long navDir, VARIANT varStart, VARIANT STDMETHODIMP wxIAccessible::get_accChild ( VARIANT varChildID, IDispatch** ppDispChild) { - wxLogDebug("get_accChild"); + wxLogTrace(wxT("access"), "get_accChild"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; if (varChildID.vt != VT_I4) { - wxLogDebug("Invalid arg for get_accChild"); + wxLogTrace(wxT("access"), "Invalid arg for get_accChild"); return E_INVALIDARG; } @@ -654,7 +655,7 @@ STDMETHODIMP wxIAccessible::get_accChild ( VARIANT varChildID, IDispatch** ppDis wxAccStatus status = m_pAccessible->GetChild(varChildID.lVal, & child); if (status == wxACC_FAIL) { - wxLogDebug("GetChild failed"); + wxLogTrace(wxT("access"), "GetChild failed"); return E_FAIL; } @@ -666,7 +667,7 @@ STDMETHODIMP wxIAccessible::get_accChild ( VARIANT varChildID, IDispatch** ppDis return E_NOTIMPL; else { - wxLogDebug("Using standard interface for get_accChild"); + wxLogTrace(wxT("access"), "Using standard interface for get_accChild"); return stdInterface->get_accChild (varChildID, ppDispChild); } } @@ -680,7 +681,7 @@ STDMETHODIMP wxIAccessible::get_accChild ( VARIANT varChildID, IDispatch** ppDis if (objectIA->QueryInterface(IID_IDispatch, (LPVOID*) ppDispChild) != S_OK) { - wxLogDebug("QueryInterface failed in get_accChild"); + wxLogTrace(wxT("access"), "QueryInterface failed in get_accChild"); return E_FAIL; } @@ -688,7 +689,7 @@ STDMETHODIMP wxIAccessible::get_accChild ( VARIANT varChildID, IDispatch** ppDis } else { - wxLogDebug("Not an accessible object"); + wxLogTrace(wxT("access"), "Not an accessible object"); return S_FALSE; // Indicates it's not an accessible object } } @@ -701,7 +702,7 @@ STDMETHODIMP wxIAccessible::get_accChild ( VARIANT varChildID, IDispatch** ppDis STDMETHODIMP wxIAccessible::get_accChildCount ( long* pCountChildren) { - wxLogDebug("get_accChildCount"); + wxLogTrace(wxT("access"), "get_accChildCount"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; @@ -719,11 +720,11 @@ STDMETHODIMP wxIAccessible::get_accChildCount ( long* pCountChildren) return E_NOTIMPL; else { - wxLogDebug("Using standard interface for get_accChildCount"); + wxLogTrace(wxT("access"), "Using standard interface for get_accChildCount"); HRESULT res = stdInterface->get_accChildCount (pCountChildren); wxString str; str.Printf(wxT("Number of children was %d"), (int) (*pCountChildren)); - wxLogDebug(str); + wxLogTrace(wxT("access"), str); return res; } } @@ -741,7 +742,7 @@ STDMETHODIMP wxIAccessible::get_accChildCount ( long* pCountChildren) STDMETHODIMP wxIAccessible::get_accParent ( IDispatch** ppDispParent) { - wxLogDebug("get_accParent"); + wxLogTrace(wxT("access"), "get_accParent"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; @@ -757,7 +758,7 @@ STDMETHODIMP wxIAccessible::get_accParent ( IDispatch** ppDispParent) // it to the standard interface. if (status == wxACC_NOT_IMPLEMENTED || !parent) { - wxLogDebug("Using standard interface to get the parent."); + wxLogTrace(wxT("access"), "Using standard interface to get the parent."); // Use standard interface instead. IAccessible* stdInterface = (IAccessible*)m_pAccessible->GetIAccessibleStd(); if (!stdInterface) @@ -773,21 +774,21 @@ STDMETHODIMP wxIAccessible::get_accParent ( IDispatch** ppDispParent) if (!objectIA) return E_FAIL; - wxLogDebug("About to call QueryInterface"); + wxLogTrace(wxT("access"), "About to call QueryInterface"); if (objectIA->QueryInterface(IID_IDispatch, (LPVOID*) ppDispParent) != S_OK) { - wxLogDebug("Failed QueryInterface"); + wxLogTrace(wxT("access"), "Failed QueryInterface"); return E_FAIL; } - wxLogDebug("Returning S_OK for get_accParent"); + wxLogTrace(wxT("access"), "Returning S_OK for get_accParent"); return S_OK; } else { // This doesn't seem to be allowed, despite the documentation, // so we handle it higher up by using the standard interface. - wxLogDebug("Returning NULL parent because there was none"); + wxLogTrace(wxT("access"), "Returning NULL parent because there was none"); *ppDispParent = NULL; return S_FALSE; } @@ -801,14 +802,14 @@ STDMETHODIMP wxIAccessible::get_accParent ( IDispatch** ppDispParent) STDMETHODIMP wxIAccessible::accDoDefaultAction(VARIANT varID) { - wxLogDebug("accDoDefaultAction"); + wxLogTrace(wxT("access"), "accDoDefaultAction"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; if (varID.vt != VT_I4) { - wxLogDebug("Invalid arg for accDoDefaultAction"); + wxLogTrace(wxT("access"), "Invalid arg for accDoDefaultAction"); return E_INVALIDARG; } @@ -846,14 +847,14 @@ STDMETHODIMP wxIAccessible::accDoDefaultAction(VARIANT varID) STDMETHODIMP wxIAccessible::get_accDefaultAction ( VARIANT varID, BSTR* pszDefaultAction) { - wxLogDebug("get_accDefaultAction"); + wxLogTrace(wxT("access"), "get_accDefaultAction"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; if (varID.vt != VT_I4) { - wxLogDebug("Invalid arg for get_accDefaultAction"); + wxLogTrace(wxT("access"), "Invalid arg for get_accDefaultAction"); return E_INVALIDARG; } @@ -906,14 +907,14 @@ STDMETHODIMP wxIAccessible::get_accDefaultAction ( VARIANT varID, BSTR* pszDefau STDMETHODIMP wxIAccessible::get_accDescription ( VARIANT varID, BSTR* pszDescription) { - wxLogDebug("get_accDescription"); + wxLogTrace(wxT("access"), "get_accDescription"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; if (varID.vt != VT_I4) { - wxLogDebug("Invalid arg for get_accDescription"); + wxLogTrace(wxT("access"), "Invalid arg for get_accDescription"); return E_INVALIDARG; } @@ -963,14 +964,14 @@ STDMETHODIMP wxIAccessible::get_accDescription ( VARIANT varID, BSTR* pszDescrip STDMETHODIMP wxIAccessible::get_accHelp ( VARIANT varID, BSTR* pszHelp) { - wxLogDebug("get_accHelp"); + wxLogTrace(wxT("access"), "get_accHelp"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; if (varID.vt != VT_I4) { - wxLogDebug("Invalid arg for get_accHelp"); + wxLogTrace(wxT("access"), "Invalid arg for get_accHelp"); return E_INVALIDARG; } @@ -1023,14 +1024,14 @@ STDMETHODIMP wxIAccessible::get_accHelp ( VARIANT varID, BSTR* pszHelp) STDMETHODIMP wxIAccessible::get_accHelpTopic ( BSTR* pszHelpFile, VARIANT varChild, long* pidTopic) { - wxLogDebug("get_accHelpTopic"); + wxLogTrace(wxT("access"), "get_accHelpTopic"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; if (varChild.vt != VT_I4) { - wxLogDebug("Invalid arg for get_accHelpTopic"); + wxLogTrace(wxT("access"), "Invalid arg for get_accHelpTopic"); return E_INVALIDARG; } @@ -1066,7 +1067,7 @@ STDMETHODIMP wxIAccessible::get_accHelpTopic ( BSTR* pszHelpFile, VARIANT varChi STDMETHODIMP wxIAccessible::get_accKeyboardShortcut ( VARIANT varID, BSTR* pszKeyboardShortcut) { - wxLogDebug("get_accKeyboardShortcut"); + wxLogTrace(wxT("access"), "get_accKeyboardShortcut"); *pszKeyboardShortcut = NULL; wxASSERT (m_pAccessible != NULL); @@ -1075,7 +1076,7 @@ STDMETHODIMP wxIAccessible::get_accKeyboardShortcut ( VARIANT varID, BSTR* pszKe if (varID.vt != VT_I4) { - wxLogDebug("Invalid arg for get_accKeyboardShortcut"); + wxLogTrace(wxT("access"), "Invalid arg for get_accKeyboardShortcut"); return E_INVALIDARG; } @@ -1125,7 +1126,7 @@ STDMETHODIMP wxIAccessible::get_accKeyboardShortcut ( VARIANT varID, BSTR* pszKe STDMETHODIMP wxIAccessible::get_accName ( VARIANT varID, BSTR* pszName) { - wxLogDebug("get_accName"); + wxLogTrace(wxT("access"), "get_accName"); *pszName = NULL; wxASSERT (m_pAccessible != NULL); @@ -1134,7 +1135,7 @@ STDMETHODIMP wxIAccessible::get_accName ( VARIANT varID, BSTR* pszName) if (varID.vt != VT_I4) { - wxLogDebug("Invalid arg for get_accName"); + wxLogTrace(wxT("access"), "Invalid arg for get_accName"); return E_INVALIDARG; } @@ -1178,14 +1179,14 @@ STDMETHODIMP wxIAccessible::get_accName ( VARIANT varID, BSTR* pszName) STDMETHODIMP wxIAccessible::get_accRole ( VARIANT varID, VARIANT* pVarRole) { - wxLogDebug("get_accRole"); + wxLogTrace(wxT("access"), "get_accRole"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; if (varID.vt != VT_I4) { - wxLogDebug("Invalid arg for get_accRole"); + wxLogTrace(wxT("access"), "Invalid arg for get_accRole"); return E_INVALIDARG; } @@ -1238,14 +1239,14 @@ STDMETHODIMP wxIAccessible::get_accRole ( VARIANT varID, VARIANT* pVarRole) STDMETHODIMP wxIAccessible::get_accState ( VARIANT varID, VARIANT* pVarState) { - wxLogDebug("get_accState"); + wxLogTrace(wxT("access"), "get_accState"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; if (varID.vt != VT_I4 && varID.vt != VT_EMPTY) { - wxLogDebug("Invalid arg for get_accState"); + wxLogTrace(wxT("access"), "Invalid arg for get_accState"); return E_INVALIDARG; } @@ -1289,14 +1290,14 @@ STDMETHODIMP wxIAccessible::get_accState ( VARIANT varID, VARIANT* pVarState) STDMETHODIMP wxIAccessible::get_accValue ( VARIANT varID, BSTR* pszValue) { - wxLogDebug("get_accValue"); + wxLogTrace(wxT("access"), "get_accValue"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; if (varID.vt != VT_I4) { - wxLogDebug("Invalid arg for get_accValue"); + wxLogTrace(wxT("access"), "Invalid arg for get_accValue"); return E_INVALIDARG; } @@ -1341,14 +1342,14 @@ STDMETHODIMP wxIAccessible::get_accValue ( VARIANT varID, BSTR* pszValue) STDMETHODIMP wxIAccessible::accSelect ( long flagsSelect, VARIANT varID ) { - wxLogDebug("get_accSelect"); + wxLogTrace(wxT("access"), "get_accSelect"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; if (varID.vt != VT_I4 && varID.vt != VT_EMPTY) { - wxLogDebug("Invalid arg for accSelect"); + wxLogTrace(wxT("access"), "Invalid arg for accSelect"); return E_INVALIDARG; } @@ -1388,7 +1389,7 @@ STDMETHODIMP wxIAccessible::accSelect ( long flagsSelect, VARIANT varID ) STDMETHODIMP wxIAccessible::get_accFocus ( VARIANT* pVarID) { - wxLogDebug("get_accFocus"); + wxLogTrace(wxT("access"), "get_accFocus"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; @@ -1450,7 +1451,7 @@ STDMETHODIMP wxIAccessible::get_accFocus ( VARIANT* pVarID) STDMETHODIMP wxIAccessible::get_accSelection ( VARIANT * pVarChildren) { - wxLogDebug("get_accSelection"); + wxLogTrace(wxT("access"), "get_accSelection"); wxASSERT (m_pAccessible != NULL); if (!m_pAccessible) return E_FAIL; @@ -1706,6 +1707,14 @@ void* wxAccessible::GetIAccessibleStd() return NULL; } +// Sends an event when something changes in an accessible object. +void wxAccessible::NotifyEvent(int eventType, wxWindow* window, wxAccObject objectType, + int objectId) +{ + ::NotifyWinEvent((DWORD) eventType, (HWND) window->GetHWND(), + (LONG) objectType, (LONG) objectId); +} + // Utilities // Convert to Windows role