diff options
author | Frederik Gladhorn <frederik.gladhorn@nokia.com> | 2011-06-28 14:37:10 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-08-18 15:51:10 +0200 |
commit | 90fd142c93ad5de5c642ae023222bd3a7b573aec (patch) | |
tree | 9a9c3c3883953c9e786d98cbc861ba44cde1bf31 | |
parent | 910e1bf4156575d23f3fd11bedf760987e278af1 (diff) |
Fix a11y crash: dock doesn't always have a widget.
Also return dock widget title.
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
(cherry picked from commit 276d16583b80da2838f9af47e15fe3a83cdb0485)
Change-Id: I8d66bec4212cc2b1df8c9b041375d7455c6a76a3
Reviewed-on: http://codereview.qt.nokia.com/3023
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
-rw-r--r-- | src/plugins/accessible/widgets/qaccessiblewidgets.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp index ea5880c846..45322e53d8 100644 --- a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp +++ b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp @@ -73,6 +73,9 @@ QT_BEGIN_NAMESPACE using namespace QAccessible2; +QString Q_GUI_EXPORT qt_accStripAmp(const QString &text); +QString Q_GUI_EXPORT qt_accHotKey(const QString &text); + QList<QWidget*> childWidgets(const QWidget *widget, bool includeTopLevel) { if (widget == 0) @@ -1139,8 +1142,8 @@ int QAccessibleTitleBar::childCount() const QString QAccessibleTitleBar::text(Text t, int child) const { if (!child) { - if (t == Value) { - return dockWidget()->windowTitle(); + if (t == Name || t == Value) { + return qt_accStripAmp(dockWidget()->windowTitle()); } } return QString(); @@ -1171,17 +1174,19 @@ QAccessible::State QAccessibleTitleBar::state(int child) const return state; } -QRect QAccessibleTitleBar::rect (int child ) const +QRect QAccessibleTitleBar::rect(int child) const { bool mapToGlobal = true; QRect rect; if (child == 0) { if (dockWidget()->isFloating()) { rect = dockWidget()->frameGeometry(); - QPoint globalPos = dockWidget()->mapToGlobal( dockWidget()->widget()->rect().topLeft() ); - globalPos.ry()--; - rect.setBottom(globalPos.y()); - mapToGlobal = false; + if (dockWidget()->widget()) { + QPoint globalPos = dockWidget()->mapToGlobal(dockWidget()->widget()->rect().topLeft()); + globalPos.ry()--; + rect.setBottom(globalPos.y()); + mapToGlobal = false; + } } else { QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(dockWidget()->layout()); rect = layout->titleArea(); |