Also added MouseArea test that depends on this functionality.
Change-Id: I1c303504ffd63d6b9dbdf95ab63e8426dc09c02d
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
for (int ii = 0; ii < childItems.count(); ++ii)
childVisibilityChanged |= QQuickItemPrivate::get(childItems.at(ii))->setEffectiveVisibleRecur(newEffectiveVisible);
- for (int ii = 0; ii < changeListeners.count(); ++ii) {
- const QQuickItemPrivate::ChangeListener &change = changeListeners.at(ii);
- if (change.types & QQuickItemPrivate::Visibility)
- change.listener->itemVisibilityChanged(q);
- }
+ itemChange(QQuickItem::ItemVisibleHasChanged, effectiveVisible);
if (isAccessible)
QAccessible::updateAccessibility(QAccessibleEvent(effectiveVisible ? QAccessible::ObjectShow : QAccessible::ObjectHide, q, 0));
ItemChildAddedChange, // value.item
ItemChildRemovedChange, // value.item
ItemSceneChange, // value.canvas
- ItemVisibleHasChanged, // value.realValue
+ ItemVisibleHasChanged, // value.boolValue
ItemParentHasChanged, // value.item
ItemOpacityHasChanged, // value.realValue
ItemActiveFocusHasChanged, // value.boolValue
--- /dev/null
+import QtQuick 2.0
+
+Rectangle {
+ width: 400; height: 400;
+
+ Rectangle {
+ width: 100; height: 100;
+ MouseArea {
+ id: mousetracker; objectName: "mousetracker"
+ anchors.fill: parent
+ visible: false
+ hoverEnabled: true
+ }
+ }
+}
void clickThrough();
void hoverPosition();
void hoverPropagation();
+ void hoverVisible();
private:
QQuickView *createView();
delete canvas;
}
+void tst_QQuickMouseArea::hoverVisible()
+{
+ QQuickView *canvas = createView();
+ canvas->setSource(testFileUrl("hoverVisible.qml"));
+
+ QQuickItem *root = canvas->rootObject();
+ QVERIFY(root != 0);
+
+ QQuickMouseArea *mouseTracker = canvas->rootObject()->findChild<QQuickMouseArea*>("mousetracker");
+ QVERIFY(mouseTracker != 0);
+
+ QSignalSpy enteredSpy(mouseTracker, SIGNAL(entered()));
+
+ QTest::mouseMove(canvas,QPoint(10,32));
+
+ QCOMPARE(mouseTracker->hovered(), false);
+ QCOMPARE(enteredSpy.count(), 0);
+
+ mouseTracker->setVisible(true);
+
+ QCOMPARE(mouseTracker->hovered(), true);
+ QCOMPARE(enteredSpy.count(), 1);
+
+ QEXPECT_FAIL("", "QTBUG-24282", Continue);
+ QCOMPARE(QPointF(mouseTracker->mouseX(), mouseTracker->mouseY()), QPointF(10,32));
+
+ delete canvas;
+}
+
QTEST_MAIN(tst_QQuickMouseArea)
#include "tst_qquickmousearea.moc"