summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorJan-Arve Saether <jan-arve.saether@nokia.com>2011-11-30 09:48:51 +0100
committerQt by Nokia <qt-info@nokia.com>2011-11-30 12:12:08 +0100
commit84e66f69ae2a2e0b70c8e51c93b6991bf3437e6d (patch)
tree64ec87aefef2c5749bd13b27a3501a3ce42b96ab /src/gui
parent55c3799bd32d6fd8ec4b5fa26ebe3e5fdbbc91b3 (diff)
Fix casting. Casting is now done through the virtual interface_cast.
Change interface_cast to return void* to avoid using virtual inheritance. Get rid of the magic Q_ACCESSIBLE_OBJECT macro. Change-Id: I94b824aef53f2ba657d39d406b387c8681d47ee4 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/accessible/qaccessible.cpp6
-rw-r--r--src/gui/accessible/qaccessible.h43
-rw-r--r--src/gui/accessible/qaccessible2.h65
-rw-r--r--src/gui/accessible/qaccessibleobject.h1
4 files changed, 28 insertions, 87 deletions
diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp
index 6553ebb6b1..29b9a20b93 100644
--- a/src/gui/accessible/qaccessible.cpp
+++ b/src/gui/accessible/qaccessible.cpp
@@ -1203,12 +1203,6 @@ QVariant QAccessibleInterface::virtual_hook(const QVariant &)
return QVariant();
}
-/*! \internal */
-QAccessible2Interface *QAccessibleInterface::cast_helper(QAccessible2::InterfaceType t)
-{
- return interface_cast(t);
-}
-
#ifndef QT_NO_DEBUG_STREAM
Q_GUI_EXPORT QDebug operator<<(QDebug d, const QAccessibleInterface *iface)
{
diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h
index 0835793418..f374e05dc2 100644
--- a/src/gui/accessible/qaccessible.h
+++ b/src/gui/accessible/qaccessible.h
@@ -309,6 +309,17 @@ public:
BackgroundColor = 4
};
+ enum InterfaceType
+ {
+ TextInterface,
+ EditableTextInterface,
+ ValueInterface,
+ TableInterface,
+ ActionInterface,
+ ImageInterface,
+ Table2Interface
+ };
+
typedef QAccessibleInterface*(*InterfaceFactory)(const QString &key, QObject*);
typedef void(*UpdateHandler)(QObject*, int who, Event reason);
typedef void(*RootObjectHandler)(QObject*);
@@ -336,20 +347,6 @@ QT_END_NAMESPACE
Q_DECLARE_METATYPE(QSet<QAccessible::Method>)
QT_BEGIN_NAMESPACE
-namespace QAccessible2
-{
- enum InterfaceType
- {
- TextInterface,
- EditableTextInterface,
- ValueInterface,
- TableInterface,
- ActionInterface,
- ImageInterface,
- Table2Interface
- };
-}
-
class QAccessible2Interface;
class QAccessibleTextInterface;
class QAccessibleEditableTextInterface;
@@ -397,33 +394,31 @@ public:
{ return qvariant_cast<QSet<Method> >(invokeMethod(ListSupportedMethods)); }
inline QAccessibleTextInterface *textInterface()
- { return reinterpret_cast<QAccessibleTextInterface *>(cast_helper(QAccessible2::TextInterface)); }
+ { return reinterpret_cast<QAccessibleTextInterface *>(interface_cast(QAccessible::TextInterface)); }
inline QAccessibleEditableTextInterface *editableTextInterface()
- { return reinterpret_cast<QAccessibleEditableTextInterface *>(cast_helper(QAccessible2::EditableTextInterface)); }
+ { return reinterpret_cast<QAccessibleEditableTextInterface *>(interface_cast(QAccessible::EditableTextInterface)); }
inline QAccessibleValueInterface *valueInterface()
- { return reinterpret_cast<QAccessibleValueInterface *>(cast_helper(QAccessible2::ValueInterface)); }
+ { return reinterpret_cast<QAccessibleValueInterface *>(interface_cast(QAccessible::ValueInterface)); }
inline QAccessibleTableInterface *tableInterface()
- { return reinterpret_cast<QAccessibleTableInterface *>(cast_helper(QAccessible2::TableInterface)); }
+ { return reinterpret_cast<QAccessibleTableInterface *>(interface_cast(QAccessible::TableInterface)); }
inline QAccessibleActionInterface *actionInterface()
- { return reinterpret_cast<QAccessibleActionInterface *>(cast_helper(QAccessible2::ActionInterface)); }
+ { return reinterpret_cast<QAccessibleActionInterface *>(interface_cast(QAccessible::ActionInterface)); }
inline QAccessibleImageInterface *imageInterface()
- { return reinterpret_cast<QAccessibleImageInterface *>(cast_helper(QAccessible2::ImageInterface)); }
+ { return reinterpret_cast<QAccessibleImageInterface *>(interface_cast(QAccessible::ImageInterface)); }
inline QAccessibleTable2Interface *table2Interface()
- { return reinterpret_cast<QAccessibleTable2Interface *>(cast_helper(QAccessible2::Table2Interface)); }
+ { return reinterpret_cast<QAccessibleTable2Interface *>(interface_cast(QAccessible::Table2Interface)); }
// FIXME
virtual QVariant virtual_hook(const QVariant &data);
- virtual QAccessible2Interface *interface_cast(QAccessible2::InterfaceType)
+ virtual void *interface_cast(QAccessible::InterfaceType)
{ return 0; }
-
private:
- QAccessible2Interface *cast_helper(QAccessible2::InterfaceType);
};
class QAccessibleEvent : public QEvent
diff --git a/src/gui/accessible/qaccessible2.h b/src/gui/accessible/qaccessible2.h
index 52dde4850a..e0db9e039b 100644
--- a/src/gui/accessible/qaccessible2.h
+++ b/src/gui/accessible/qaccessible2.h
@@ -91,50 +91,9 @@ namespace QAccessible2
};
}
-class Q_GUI_EXPORT QAccessible2Interface
+class Q_GUI_EXPORT QAccessibleTextInterface
{
public:
- virtual ~QAccessible2Interface() {}
-};
-
-// catch-all functions. If an accessible class doesn't implement interface T, return 0
-inline QAccessible2Interface *qAccessibleValueCastHelper() { return 0; }
-inline QAccessible2Interface *qAccessibleTextCastHelper() { return 0; }
-inline QAccessible2Interface *qAccessibleEditableTextCastHelper() { return 0; }
-inline QAccessible2Interface *qAccessibleTableCastHelper() { return 0; }
-inline QAccessible2Interface *qAccessibleActionCastHelper() { return 0; }
-inline QAccessible2Interface *qAccessibleImageCastHelper() { return 0; }
-inline QAccessible2Interface *qAccessibleTable2CastHelper() { return 0; }
-
-#define Q_ACCESSIBLE_OBJECT \
- public: \
- QAccessible2Interface *interface_cast(QAccessible2::InterfaceType t) \
- { \
- switch (t) { \
- case QAccessible2::TextInterface: \
- return qAccessibleTextCastHelper(); \
- case QAccessible2::EditableTextInterface: \
- return qAccessibleEditableTextCastHelper(); \
- case QAccessible2::ValueInterface: \
- return qAccessibleValueCastHelper(); \
- case QAccessible2::TableInterface: \
- return qAccessibleTableCastHelper(); \
- case QAccessible2::ActionInterface: \
- return qAccessibleActionCastHelper(); \
- case QAccessible2::ImageInterface: \
- return qAccessibleImageCastHelper(); \
- case QAccessible2::Table2Interface: \
- return qAccessibleTable2CastHelper(); \
- } \
- return 0; \
- } \
- private:
-
-class Q_GUI_EXPORT QAccessibleTextInterface: public QAccessible2Interface
-{
-public:
- inline QAccessible2Interface *qAccessibleTextCastHelper() { return this; }
-
virtual ~QAccessibleTextInterface() {}
virtual void addSelection(int startOffset, int endOffset) = 0;
@@ -158,11 +117,9 @@ public:
virtual void scrollToSubstring(int startIndex, int endIndex) = 0;
};
-class Q_GUI_EXPORT QAccessibleEditableTextInterface: public QAccessible2Interface
+class Q_GUI_EXPORT QAccessibleEditableTextInterface
{
public:
- inline QAccessible2Interface *qAccessibleEditableTextCastHelper() { return this; }
-
virtual ~QAccessibleEditableTextInterface() {}
virtual void copyText(int startOffset, int endOffset) = 0;
@@ -177,7 +134,7 @@ public:
class Q_GUI_EXPORT QAccessibleSimpleEditableTextInterface: public QAccessibleEditableTextInterface
{
public:
- QAccessibleSimpleEditableTextInterface(QAccessibleInterface *accessibleInterface);
+ QAccessibleSimpleEditableTextInterface(QAccessibleInterface *accessibleInterface); //###
void copyText(int startOffset, int endOffset);
void deleteText(int startOffset, int endOffset);
@@ -191,10 +148,9 @@ private:
QAccessibleInterface *iface;
};
-class Q_GUI_EXPORT QAccessibleValueInterface: public QAccessible2Interface
+class Q_GUI_EXPORT QAccessibleValueInterface
{
public:
- inline QAccessible2Interface *qAccessibleValueCastHelper() { return this; }
virtual ~QAccessibleValueInterface() {}
@@ -204,10 +160,10 @@ public:
virtual QVariant minimumValue() = 0;
};
-class Q_GUI_EXPORT QAccessibleTableInterface: public QAccessible2Interface
+class Q_GUI_EXPORT QAccessibleTableInterface
{
public:
- inline QAccessible2Interface *qAccessibleTableCastHelper() { return this; }
+
virtual QAccessibleInterface *accessibleAt(int row, int column) = 0;
virtual QAccessibleInterface *caption() = 0;
@@ -267,10 +223,9 @@ public:
virtual bool isExpandable() const = 0;
};
-class Q_GUI_EXPORT QAccessibleTable2Interface: public QAccessible2Interface
+class Q_GUI_EXPORT QAccessibleTable2Interface
{
public:
- inline QAccessible2Interface *qAccessibleTable2CastHelper() { return this; }
// Returns the cell at the specified row and column in the table.
virtual QAccessibleTable2CellInterface *cellAt (int row, int column) const = 0;
@@ -327,11 +282,10 @@ friend class QAbstractItemView;
friend class QAbstractItemViewPrivate;
};
-class Q_GUI_EXPORT QAccessibleActionInterface: public QAccessible2Interface
+class Q_GUI_EXPORT QAccessibleActionInterface
{
Q_DECLARE_TR_FUNCTIONS(QAccessibleActionInterface)
public:
- inline QAccessible2Interface *qAccessibleActionCastHelper() { return this; }
virtual QStringList actionNames() const = 0;
virtual QString localizedActionName(const QString &name) const;
@@ -348,10 +302,9 @@ public:
static const QString &uncheckAction();
};
-class Q_GUI_EXPORT QAccessibleImageInterface : public QAccessible2Interface
+class Q_GUI_EXPORT QAccessibleImageInterface
{
public:
- inline QAccessible2Interface *qAccessibleImageCastHelper() { return this; }
virtual QString imageDescription() = 0;
virtual QSize imageSize() = 0;
diff --git a/src/gui/accessible/qaccessibleobject.h b/src/gui/accessible/qaccessibleobject.h
index 6a02dc86c7..75d277f05b 100644
--- a/src/gui/accessible/qaccessibleobject.h
+++ b/src/gui/accessible/qaccessibleobject.h
@@ -78,7 +78,6 @@ private:
class Q_GUI_EXPORT QAccessibleApplication : public QAccessibleObject
{
- Q_ACCESSIBLE_OBJECT
public:
QAccessibleApplication();