summaryrefslogtreecommitdiffstats
path: root/src/plugins/accessible
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@nokia.com>2012-01-05 13:57:33 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-10 07:14:34 +0100
commit39a052c66479c6d7bd13c4f583fecf6a895b2948 (patch)
tree13ad88a7a43482a07e97a17e8a38ee4537399ea7 /src/plugins/accessible
parent5313c28b30c876d52df3dd4f74971832c57c6f8a (diff)
Accessiblity State as bit field.
We would like to add more flags that will be over the 32 bit boundary. On Windows enums don't seem to digest values >32 bit. This patch changes the state flags to be a bit field instead. The windows part of the patch was written by Jan-Arve Sæther. Change-Id: I2d1d87807f920ce4d4a5c7bfea8b1122ed44eb08 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
Diffstat (limited to 'src/plugins/accessible')
-rw-r--r--src/plugins/accessible/widgets/itemviews.cpp26
-rw-r--r--src/plugins/accessible/widgets/itemviews.h2
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.cpp14
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.cpp27
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp26
5 files changed, 49 insertions, 46 deletions
diff --git a/src/plugins/accessible/widgets/itemviews.cpp b/src/plugins/accessible/widgets/itemviews.cpp
index a12036b52d..ec575371db 100644
--- a/src/plugins/accessible/widgets/itemviews.cpp
+++ b/src/plugins/accessible/widgets/itemviews.cpp
@@ -363,7 +363,7 @@ QAccessible::Role QAccessibleTable::role() const
QAccessible::State QAccessibleTable::state() const
{
- return QAccessible::Normal;
+ return QAccessible::State();
}
QAccessibleInterface *QAccessibleTable::childAt(int x, int y) const
@@ -701,34 +701,34 @@ QAccessible::Role QAccessibleTableCell::role() const
QAccessible::State QAccessibleTableCell::state() const
{
- QAccessible::State st = QAccessible::Normal;
+ QAccessible::State st;
QRect globalRect = view->rect();
globalRect.translate(view->mapToGlobal(QPoint(0,0)));
if (!globalRect.intersects(rect()))
- st |= QAccessible::Invisible;
+ st.invisible = true;
if (view->selectionModel()->isSelected(m_index))
- st |= QAccessible::Selected;
+ st.selected = true;
if (view->selectionModel()->currentIndex() == m_index)
- st |= QAccessible::Focused;
+ st.focused = true;
if (m_index.model()->data(m_index, Qt::CheckStateRole).toInt() == Qt::Checked)
- st |= QAccessible::Checked;
+ st.checked = true;
Qt::ItemFlags flags = m_index.flags();
if (flags & Qt::ItemIsSelectable) {
- st |= QAccessible::Selectable;
- st |= QAccessible::Focusable;
+ st.selectable = true;
+ st.focusable = true;
if (view->selectionMode() == QAbstractItemView::MultiSelection)
- st |= QAccessible::MultiSelectable;
+ st.multiSelectable = true;
if (view->selectionMode() == QAbstractItemView::ExtendedSelection)
- st |= QAccessible::ExtSelectable;
+ st.extSelectable = true;
}
if (m_role == QAccessible::TreeItem) {
const QTreeView *treeView = qobject_cast<const QTreeView*>(view);
if (treeView->model()->hasChildren(m_index))
- st |= QAccessible::Expandable;
+ st.expandable = true;
if (treeView->isExpanded(m_index))
- st |= QAccessible::Expanded;
+ st.expanded = true;
}
return st;
}
@@ -840,7 +840,7 @@ QAccessible::Role QAccessibleTableHeaderCell::role() const
QAccessible::State QAccessibleTableHeaderCell::state() const
{
- return QAccessible::Normal;
+ return QAccessible::State();
}
QRect QAccessibleTableHeaderCell::rect() const
diff --git a/src/plugins/accessible/widgets/itemviews.h b/src/plugins/accessible/widgets/itemviews.h
index 3a2f5a8cb1..5ba75ce1b0 100644
--- a/src/plugins/accessible/widgets/itemviews.h
+++ b/src/plugins/accessible/widgets/itemviews.h
@@ -264,7 +264,7 @@ public:
QObject *object() const { return 0; }
QAccessible::Role role() const { return QAccessible::Pane; }
- QAccessible::State state() const { return QAccessible::Normal; }
+ QAccessible::State state() const { return QAccessible::State(); }
QRect rect() const { return QRect(); }
bool isValid() const { return true; }
diff --git a/src/plugins/accessible/widgets/qaccessiblemenu.cpp b/src/plugins/accessible/widgets/qaccessiblemenu.cpp
index d3a7fe0fe6..9771f23881 100644
--- a/src/plugins/accessible/widgets/qaccessiblemenu.cpp
+++ b/src/plugins/accessible/widgets/qaccessiblemenu.cpp
@@ -282,28 +282,28 @@ void QAccessibleMenuItem::setText(QAccessible::Text /*t*/, const QString & /*tex
QAccessible::State QAccessibleMenuItem::state() const
{
- QAccessible::State s = QAccessible::Normal;
+ QAccessible::State s;
QWidget *own = owner();
if (own->testAttribute(Qt::WA_WState_Visible) == false || m_action->isVisible() == false) {
- s |= QAccessible::Invisible;
+ s.invisible = true;
}
if (QMenu *menu = qobject_cast<QMenu*>(own)) {
if (menu->activeAction() == m_action)
- s |= QAccessible::Focused;
+ s.focused = true;
#ifndef QT_NO_MENUBAR
} else if (QMenuBar *menuBar = qobject_cast<QMenuBar*>(own)) {
if (menuBar->activeAction() == m_action)
- s |= QAccessible::Focused;
+ s.focused = true;
#endif
}
if (own->style()->styleHint(QStyle::SH_Menu_MouseTracking))
- s |= QAccessible::HotTracked;
+ s.hotTracked = true;
if (m_action->isSeparator() || !m_action->isEnabled())
- s |= QAccessible::Unavailable;
+ s.unavailable = true;
if (m_action->isChecked())
- s |= QAccessible::Checked;
+ s.checked = true;
return s;
}
diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
index 182a85dfc7..6598582e2a 100644
--- a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
+++ b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
@@ -845,18 +845,21 @@ void QAccessibleMdiSubWindow::setText(QAccessible::Text textType, const QString
QAccessible::State QAccessibleMdiSubWindow::state() const
{
- QAccessible::State state = QAccessible::Normal | QAccessible::Focusable;
- if (!mdiSubWindow()->isMaximized())
- state |= (QAccessible::Movable | QAccessible::Sizeable);
+ QAccessible::State state;
+ state.focusable = true;
+ if (!mdiSubWindow()->isMaximized()) {
+ state.movable = true;
+ state.sizeable = true;
+ }
if (mdiSubWindow()->isAncestorOf(QApplication::focusWidget())
|| QApplication::focusWidget() == mdiSubWindow())
- state |= QAccessible::Focused;
+ state.focused = true;
if (!mdiSubWindow()->isVisible())
- state |= QAccessible::Invisible;
+ state.invisible = true;
if (!mdiSubWindow()->parentWidget()->contentsRect().contains(mdiSubWindow()->geometry()))
- state |= QAccessible::Offscreen;
+ state.offscreen = true;
if (!mdiSubWindow()->isEnabled())
- state |= QAccessible::Unavailable;
+ state.unavailable = true;
return state;
}
@@ -1256,17 +1259,17 @@ QString QAccessibleTitleBar::text(QAccessible::Text t) const
QAccessible::State QAccessibleTitleBar::state() const
{
- QAccessible::State state = QAccessible::Normal;
+ QAccessible::State state;
QDockWidget *w = dockWidget();
if (w->testAttribute(Qt::WA_WState_Visible) == false)
- state |= QAccessible::Invisible;
+ state.invisible = true;
if (w->focusPolicy() != Qt::NoFocus && w->isActiveWindow())
- state |= QAccessible::Focusable;
+ state.focusable = true;
if (w->hasFocus())
- state |= QAccessible::Focused;
+ state.focused = true;
if (!w->isEnabled())
- state |= QAccessible::Unavailable;
+ state.unavailable = true;
return state;
}
diff --git a/src/plugins/accessible/widgets/simplewidgets.cpp b/src/plugins/accessible/widgets/simplewidgets.cpp
index b05b917c21..74e9645693 100644
--- a/src/plugins/accessible/widgets/simplewidgets.cpp
+++ b/src/plugins/accessible/widgets/simplewidgets.cpp
@@ -140,18 +140,18 @@ QAccessible::State QAccessibleButton::state() const
QAbstractButton *b = button();
QCheckBox *cb = qobject_cast<QCheckBox *>(b);
if (b->isChecked())
- state |= QAccessible::Checked;
+ state.checked = true;
else if (cb && cb->checkState() == Qt::PartiallyChecked)
- state |= QAccessible::Mixed;
+ state.mixed = true;
if (b->isDown())
- state |= QAccessible::Pressed;
+ state.pressed = true;
QPushButton *pb = qobject_cast<QPushButton*>(b);
if (pb) {
if (pb->isDefault())
- state |= QAccessible::DefaultButton;
+ state.defaultButton = true;
#ifndef QT_NO_MENU
if (pb->menu())
- state |= QAccessible::HasPopup;
+ state.hasPopup = true;
#endif
}
@@ -171,7 +171,7 @@ QStringList QAccessibleButton::actionNames() const
break;
default:
if (button()->isCheckable()) {
- if (state() & QAccessible::Checked) {
+ if (state().checked) {
names << uncheckAction();
} else {
// FIXME
@@ -263,10 +263,10 @@ QAccessible::State QAccessibleToolButton::state() const
{
QAccessible::State st = QAccessibleButton::state();
if (toolButton()->autoRaise())
- st |= QAccessible::HotTracked;
+ st.hotTracked = true;
#ifndef QT_NO_MENU
if (toolButton()->menu())
- st |= QAccessible::HasPopup;
+ st.hasPopup = true;
#endif
return st;
}
@@ -588,16 +588,16 @@ QAccessible::State QAccessibleLineEdit::state() const
QLineEdit *l = lineEdit();
if (l->isReadOnly())
- state |= QAccessible::ReadOnly;
+ state.readOnly = true;
if (l->echoMode() != QLineEdit::Normal)
- state |= QAccessible::Protected;
- state |= QAccessible::Selectable;
+ state.passwordEdit = true;
+ state.selectable = true;
if (l->hasSelectedText())
- state |= QAccessible::Selected;
+ state.selected = true;
if (l->contextMenuPolicy() != Qt::NoContextMenu
&& l->contextMenuPolicy() != Qt::PreventContextMenu)
- state |= QAccessible::HasPopup;
+ state.hasPopup = true;
return state;
}