diff options
Diffstat (limited to 'src/quick/items')
-rw-r--r-- | src/quick/items/qquickaccessibleattached.cpp | 4 | ||||
-rw-r--r-- | src/quick/items/qquickaccessibleattached_p.h | 18 | ||||
-rw-r--r-- | src/quick/items/qquickflickable.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickflickable_p.h | 2 | ||||
-rw-r--r-- | src/quick/items/qquickitem.cpp | 16 | ||||
-rw-r--r-- | src/quick/items/qquickitem.h | 2 | ||||
-rw-r--r-- | src/quick/items/qquickitem_p.h | 2 | ||||
-rw-r--r-- | src/quick/items/qquickmousearea.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickmousearea_p.h | 2 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffectnode.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffectsource.cpp | 1 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 17 | ||||
-rw-r--r-- | src/quick/items/qquickthreadedwindowmanager.cpp | 3 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 4 | ||||
-rw-r--r-- | src/quick/items/qquickwindow_p.h | 2 | ||||
-rw-r--r-- | src/quick/items/qquickwindowmanager.cpp | 2 |
16 files changed, 69 insertions, 12 deletions
diff --git a/src/quick/items/qquickaccessibleattached.cpp b/src/quick/items/qquickaccessibleattached.cpp index 372a47963e..193a0280b3 100644 --- a/src/quick/items/qquickaccessibleattached.cpp +++ b/src/quick/items/qquickaccessibleattached.cpp @@ -152,6 +152,10 @@ QQuickAccessibleAttached::QQuickAccessibleAttached(QObject *parent) item->d_func()->setAccessibleFlagAndListener(); QAccessibleEvent ev(item, QAccessible::ObjectCreated); QAccessible::updateAccessibility(&ev); + + if (!parent->property("value").isNull()) { + connect(parent, SIGNAL(valueChanged()), this, SLOT(valueChanged())); + } } QQuickAccessibleAttached::~QQuickAccessibleAttached() diff --git a/src/quick/items/qquickaccessibleattached_p.h b/src/quick/items/qquickaccessibleattached_p.h index 74f486ae7d..6c10b496d0 100644 --- a/src/quick/items/qquickaccessibleattached_p.h +++ b/src/quick/items/qquickaccessibleattached_p.h @@ -127,11 +127,29 @@ public: return obj->setProperty(propertyName, value); } + static QObject *findAccessible(QObject *object, QAccessible::Role role = QAccessible::NoRole) + { + while (object) { + QObject *att = QQuickAccessibleAttached::attachedProperties(object); + if (att && (role == QAccessible::NoRole || att->property("role").toInt() == role)) { + break; + } + object = object->parent(); + } + return object; + } + +public Q_SLOTS: + void valueChanged() { + QAccessibleValueChangeEvent ev(parent(), parent()->property("value")); + QAccessible::updateAccessibility(&ev); + } Q_SIGNALS: void roleChanged(); void nameChanged(); void descriptionChanged(); + private: QAccessible::Role m_role; QString m_name; diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp index 0a3dcd8039..6e5e6b74a0 100644 --- a/src/quick/items/qquickflickable.cpp +++ b/src/quick/items/qquickflickable.cpp @@ -1270,6 +1270,7 @@ void QQuickFlickable::mouseReleaseEvent(QMouseEvent *event) } } +#ifndef QT_NO_WHEELEVENT void QQuickFlickable::wheelEvent(QWheelEvent *event) { Q_D(QQuickFlickable); @@ -1324,6 +1325,7 @@ void QQuickFlickable::wheelEvent(QWheelEvent *event) if (!event->isAccepted()) QQuickItem::wheelEvent(event); } +#endif bool QQuickFlickablePrivate::isInnermostPressDelay(QQuickItem *i) const { diff --git a/src/quick/items/qquickflickable_p.h b/src/quick/items/qquickflickable_p.h index d5f97ad963..ed4b026be3 100644 --- a/src/quick/items/qquickflickable_p.h +++ b/src/quick/items/qquickflickable_p.h @@ -234,7 +234,9 @@ protected: virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); +#ifndef QT_NO_WHEELEVENT virtual void wheelEvent(QWheelEvent *event); +#endif virtual void timerEvent(QTimerEvent *event); QQuickFlickableVisibleArea *visibleArea(); diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 2340da9b9f..6668cb72c5 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -3129,8 +3129,12 @@ void QQuickItem::inputMethodEvent(QInputMethodEvent *event) void QQuickItem::focusInEvent(QFocusEvent * /*event*/) { #ifndef QT_NO_ACCESSIBILITY - QAccessibleEvent ev(this, QAccessible::Focus); - QAccessible::updateAccessibility(&ev); + if (QAccessible::isActive()) { + if (QObject *acc = QQuickAccessibleAttached::findAccessible(this)) { + QAccessibleEvent ev(acc, QAccessible::Focus); + QAccessible::updateAccessibility(&ev); + } + } #endif } @@ -3202,6 +3206,7 @@ void QQuickItem::touchUngrabEvent() // XXX todo } +#ifndef QT_NO_WHEELEVENT /*! This event handler can be reimplemented in a subclass to receive wheel events for an item. The event information is provided by the @@ -3211,6 +3216,7 @@ void QQuickItem::wheelEvent(QWheelEvent *event) { event->ignore(); } +#endif /*! This event handler can be reimplemented in a subclass to receive touch @@ -4100,11 +4106,13 @@ void QQuickItemPrivate::deliverMouseEvent(QMouseEvent *e) } } +#ifndef QT_NO_WHEELEVENT void QQuickItemPrivate::deliverWheelEvent(QWheelEvent *e) { Q_Q(QQuickItem); q->wheelEvent(e); } +#endif void QQuickItemPrivate::deliverTouchEvent(QTouchEvent *e) { @@ -5264,7 +5272,7 @@ void QQuickItem::setFlags(Flags flags) { Q_D(QQuickItem); - if ((flags & ItemIsFocusScope) != (d->flags & ItemIsFocusScope)) { + if (int(flags & ItemIsFocusScope) != int(d->flags & ItemIsFocusScope)) { if (flags & ItemIsFocusScope && !d->childItems.isEmpty() && d->window) { qWarning("QQuickItem: Cannot set FocusScope once item has children and is in a window."); flags &= ~ItemIsFocusScope; @@ -5274,7 +5282,7 @@ void QQuickItem::setFlags(Flags flags) } } - if ((flags & ItemClipsChildrenToShape ) != (d->flags & ItemClipsChildrenToShape)) + if (int(flags & ItemClipsChildrenToShape) != int(d->flags & ItemClipsChildrenToShape)) d->dirty(QQuickItemPrivate::Clip); d->flags = flags; diff --git a/src/quick/items/qquickitem.h b/src/quick/items/qquickitem.h index bba26be060..dc20310c48 100644 --- a/src/quick/items/qquickitem.h +++ b/src/quick/items/qquickitem.h @@ -398,7 +398,9 @@ protected: virtual void mouseDoubleClickEvent(QMouseEvent *event); virtual void mouseUngrabEvent(); // XXX todo - params? virtual void touchUngrabEvent(); +#ifndef QT_NO_WHEELEVENT virtual void wheelEvent(QWheelEvent *event); +#endif virtual void touchEvent(QTouchEvent *event); virtual void hoverEnterEvent(QHoverEvent *event); virtual void hoverMoveEvent(QHoverEvent *event); diff --git a/src/quick/items/qquickitem_p.h b/src/quick/items/qquickitem_p.h index 363cc93cc4..804b10deac 100644 --- a/src/quick/items/qquickitem_p.h +++ b/src/quick/items/qquickitem_p.h @@ -528,7 +528,9 @@ public: #endif void deliverFocusEvent(QFocusEvent *); void deliverMouseEvent(QMouseEvent *); +#ifndef QT_NO_WHEELEVENT void deliverWheelEvent(QWheelEvent *); +#endif void deliverTouchEvent(QTouchEvent *); void deliverHoverEvent(QHoverEvent *); #ifndef QT_NO_DRAGANDDROP diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp index fd01c80ba5..0edbd1b9a9 100644 --- a/src/quick/items/qquickmousearea.cpp +++ b/src/quick/items/qquickmousearea.cpp @@ -938,6 +938,7 @@ void QQuickMouseArea::hoverLeaveEvent(QHoverEvent *event) setHovered(false); } +#ifndef QT_NO_WHEELEVENT void QQuickMouseArea::wheelEvent(QWheelEvent *event) { Q_D(QQuickMouseArea); @@ -953,6 +954,7 @@ void QQuickMouseArea::wheelEvent(QWheelEvent *event) if (!we.isAccepted()) QQuickItem::wheelEvent(event); } +#endif void QQuickMouseArea::ungrabMouse() { diff --git a/src/quick/items/qquickmousearea_p.h b/src/quick/items/qquickmousearea_p.h index eb5bddf1db..c2138792ae 100644 --- a/src/quick/items/qquickmousearea_p.h +++ b/src/quick/items/qquickmousearea_p.h @@ -222,7 +222,9 @@ protected: virtual void hoverEnterEvent(QHoverEvent *event); virtual void hoverMoveEvent(QHoverEvent *event); virtual void hoverLeaveEvent(QHoverEvent *event); +#ifndef QT_NO_WHEELEVENT virtual void wheelEvent(QWheelEvent *event); +#endif virtual bool childMouseEventFilter(QQuickItem *i, QEvent *e); virtual void timerEvent(QTimerEvent *event); virtual void windowDeactivateEvent(); diff --git a/src/quick/items/qquickshadereffectnode.cpp b/src/quick/items/qquickshadereffectnode.cpp index 622000e492..15989db57b 100644 --- a/src/quick/items/qquickshadereffectnode.cpp +++ b/src/quick/items/qquickshadereffectnode.cpp @@ -153,7 +153,7 @@ void QQuickCustomMaterialShader::updateState(const RenderState &state, QSGMateri if (state.isMatrixDirty()) program()->setUniformValue(loc, state.combinedMatrix()); } else if (d.specialType == UniformData::None) { - switch (d.value.type()) { + switch (int(d.value.type())) { case QMetaType::QColor: program()->setUniformValue(loc, qt_premultiply_color(qvariant_cast<QColor>(d.value))); break; diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp index 2b613df0f2..0c4e263ac2 100644 --- a/src/quick/items/qquickshadereffectsource.cpp +++ b/src/quick/items/qquickshadereffectsource.cpp @@ -695,6 +695,7 @@ void QQuickShaderEffectSource::setSourceItem(QQuickItem *item) void QQuickShaderEffectSource::sourceItemDestroyed(QObject *item) { Q_ASSERT(item == m_sourceItem); + Q_UNUSED(item); m_sourceItem = 0; update(); emit sourceItemChanged(); diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index fee49593ee..6dd8fb157d 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -59,6 +59,7 @@ #ifndef QT_NO_ACCESSIBILITY #include "qaccessible.h" +#include "qquickaccessibleattached_p.h" #endif QT_BEGIN_NAMESPACE @@ -3374,9 +3375,11 @@ void QQuickTextInputPrivate::internalSetText(const QString &txt, int pos, bool e #ifdef QT_NO_ACCESSIBILITY Q_UNUSED(changed) #else - if (changed) { - QAccessibleTextUpdateEvent ev(q, 0, oldText, m_text); - QAccessible::updateAccessibility(&ev); + if (changed && QAccessible::isActive()) { + if (QObject *acc = QQuickAccessibleAttached::findAccessible(q, QAccessible::EditableText)) { + QAccessibleTextUpdateEvent ev(acc, 0, oldText, m_text); + QAccessible::updateAccessibility(&ev); + } } #endif } @@ -4025,8 +4028,12 @@ bool QQuickTextInputPrivate::emitCursorPositionChanged() } #ifndef QT_NO_ACCESSIBILITY - QAccessibleTextCursorEvent ev(q, m_cursor); - QAccessible::updateAccessibility(&ev); + if (QAccessible::isActive()) { + if (QObject *acc = QQuickAccessibleAttached::findAccessible(q, QAccessible::EditableText)) { + QAccessibleTextCursorEvent ev(acc, m_cursor); + QAccessible::updateAccessibility(&ev); + } + } #endif return true; diff --git a/src/quick/items/qquickthreadedwindowmanager.cpp b/src/quick/items/qquickthreadedwindowmanager.cpp index 4c38686298..63e2c46d79 100644 --- a/src/quick/items/qquickthreadedwindowmanager.cpp +++ b/src/quick/items/qquickthreadedwindowmanager.cpp @@ -845,6 +845,9 @@ QImage QQuickRenderThreadSingleContextWindowManager::grab(QQuickWindow *window) if (QThread::currentThread() != qApp->thread()) { qWarning("QQuickWindow::grabFrameBuffer: can only be called from the GUI thread"); return QImage(); + } else if (window->size().width() <= 0 || window->size().height() <= 0 ) { + qWarning("QQuickWindow::grabFrameBuffer: Can't grab a Window with size %dx%d", window->size().width(), window->size().height()); + return QImage(); } #ifdef THREAD_DEBUG diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index a915430616..2cde3cc434 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -1421,6 +1421,7 @@ bool QQuickWindowPrivate::deliverHoverEvent(QQuickItem *item, const QPointF &sce return false; } +#ifndef QT_NO_WHEELEVENT bool QQuickWindowPrivate::deliverWheelEvent(QQuickItem *item, QWheelEvent *event) { Q_Q(QQuickWindow); @@ -1457,7 +1458,6 @@ bool QQuickWindowPrivate::deliverWheelEvent(QQuickItem *item, QWheelEvent *event return false; } -#ifndef QT_NO_WHEELEVENT /*! \reimp */ void QQuickWindow::wheelEvent(QWheelEvent *event) { @@ -2058,9 +2058,11 @@ bool QQuickWindow::sendEvent(QQuickItem *item, QEvent *e) item->mouseUngrabEvent(); } break; +#ifndef QT_NO_WHEELEVENT case QEvent::Wheel: QQuickItemPrivate::get(item)->deliverWheelEvent(static_cast<QWheelEvent *>(e)); break; +#endif case QEvent::HoverEnter: case QEvent::HoverLeave: case QEvent::HoverMove: diff --git a/src/quick/items/qquickwindow_p.h b/src/quick/items/qquickwindow_p.h index fdf5fe2abb..c8ecd43238 100644 --- a/src/quick/items/qquickwindow_p.h +++ b/src/quick/items/qquickwindow_p.h @@ -131,7 +131,9 @@ public: bool deliverInitialMousePressEvent(QQuickItem *, QMouseEvent *); bool deliverMouseEvent(QMouseEvent *); bool sendFilteredMouseEvent(QQuickItem *, QQuickItem *, QEvent *); +#ifndef QT_NO_WHEELEVENT bool deliverWheelEvent(QQuickItem *, QWheelEvent *); +#endif bool deliverTouchPoints(QQuickItem *, QTouchEvent *, const QList<QTouchEvent::TouchPoint> &, QSet<int> *, QHash<QQuickItem *, QList<QTouchEvent::TouchPoint> > *); bool deliverTouchEvent(QTouchEvent *); diff --git a/src/quick/items/qquickwindowmanager.cpp b/src/quick/items/qquickwindowmanager.cpp index 5da904ace2..1249468a4d 100644 --- a/src/quick/items/qquickwindowmanager.cpp +++ b/src/quick/items/qquickwindowmanager.cpp @@ -253,7 +253,7 @@ void QQuickTrivialWindowManager::renderWindow(QQuickWindow *window) QQuickWindowPrivate *cd = QQuickWindowPrivate::get(window); cd->polishItems(); - int renderTime, syncTime; + int renderTime = 0, syncTime = 0; QTime renderTimer; if (qquick_render_timing()) renderTimer.start(); |