QT_BEGIN_NAMESPACE
-//#define DEBUG_SHOW_ATCLIENT_COMMANDS
-#ifdef DEBUG_SHOW_ATCLIENT_COMMANDS
+#ifndef QT_NO_DEBUG
QT_BEGIN_INCLUDE_NAMESPACE
-#include <qdebug.h>
+# include <qdebug.h>
QT_END_INCLUDE_NAMESPACE
+static inline bool debug_accessibility()
+{
+ static signed int debugging = -1;
+ if (debugging == -1)
+ debugging = qgetenv("QT_DEBUG_ACCESSIBILITY").toInt();
+ return !!debugging;
+}
+# define accessibleDebug !debug_accessibility() ? (void)0 : qDebug
+#else
+# define accessibleDebug()
+#endif
-void showDebug(const char* funcName, const QAccessibleInterface *iface)
+//#define DEBUG_SHOW_ATCLIENT_COMMANDS
+#if defined(DEBUG_SHOW_ATCLIENT_COMMANDS)
+void accessibleDebugClientCalls_helper(const char* funcName, const QAccessibleInterface *iface)
{
- qDebug() << "Role:" << qAccessibleRoleString(iface->role(0))
- << "Name:" << iface->text(QAccessible::Name, 0)
- << "State:" << QString::number(int(iface->state(0)), 16)
- << QLatin1String(funcName);
+ QString str;
+ QDebug dbg(&str);
+ dbg << iface << QLatin1String(funcName);
+ accessibleDebug("%s", qPrintable(str));
}
+# define accessibleDebugClientCalls(iface) accessibleDebugClientCalls_helper(Q_FUNC_INFO, iface)
#else
-# define showDebug(f, iface)
+# define accessibleDebugClientCalls(iface)
#endif
+
typedef QSharedPointer<QAccessibleInterface> QAIPointer;
// This stuff is used for widgets/items with no window handle:
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accHitTest(long xLeft, long yTop, VARIANT *pvarID)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
// moz: [important]
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accLocation(long *pxLeft, long *pyTop, long *pcxWidth, long *pcyHeight, VARIANT varID)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
// moz: [important, but no need to implement up/down/left/right]
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accNavigate(long navDir, VARIANT varStart, VARIANT *pvarEnd)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
// moz: [important]
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accChild(VARIANT varChildID, IDispatch** ppdispChild)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
// moz: [important]
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accChildCount(long* pcountChildren)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
// moz: [important]
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accParent(IDispatch** ppdispParent)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accDoDefaultAction(VARIANT varID)
{
Q_UNUSED(varID);
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDefaultAction(VARIANT varID, BSTR* pszDefaultAction)
{
Q_UNUSED(varID);
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDescription(VARIANT varID, BSTR* pszDescription)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accHelp(VARIANT varID, BSTR *pszHelp)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accKeyboardShortcut(VARIANT varID, BSTR *pszKeyboardShortcut)
{
Q_UNUSED(varID);
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
// moz: [important]
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accName(VARIANT varID, BSTR* pszName)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
HRESULT STDMETHODCALLTYPE QWindowsAccessible::put_accName(VARIANT, BSTR)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
return DISP_E_MEMBERNOTFOUND;
}
// moz: [important]
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accRole(VARIANT varID, VARIANT *pvarRole)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
// moz: [important]
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accState(VARIANT varID, VARIANT *pvarState)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
// moz: [important]
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accValue(VARIANT varID, BSTR* pszValue)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid() || varID.lVal)
return E_FAIL;
HRESULT STDMETHODCALLTYPE QWindowsAccessible::put_accValue(VARIANT, BSTR)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
return DISP_E_MEMBERNOTFOUND;
}
{
Q_UNUSED(flagsSelect);
Q_UNUSED(varID);
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
// moz: [important]
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accFocus(VARIANT *pvarID)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accSelection(VARIANT *pvarChildren)
{
- showDebug(__FUNCTION__, accessible);
+ accessibleDebugClientCalls(accessible);
if (!accessible->isValid())
return E_FAIL;