diff options
author | Jan-Arve Saether <jan-arve.saether@nokia.com> | 2011-11-30 09:48:51 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-30 12:12:08 +0100 |
commit | 84e66f69ae2a2e0b70c8e51c93b6991bf3437e6d (patch) | |
tree | 64ec87aefef2c5749bd13b27a3501a3ce42b96ab /src/gui | |
parent | 55c3799bd32d6fd8ec4b5fa26ebe3e5fdbbc91b3 (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.cpp | 6 | ||||
-rw-r--r-- | src/gui/accessible/qaccessible.h | 43 | ||||
-rw-r--r-- | src/gui/accessible/qaccessible2.h | 65 | ||||
-rw-r--r-- | src/gui/accessible/qaccessibleobject.h | 1 |
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(); |