Skip to content

Commit

Permalink
Ensure visibility changes are communicated through itemChange.
Browse files Browse the repository at this point in the history
Also added MouseArea test that depends on this functionality.

Change-Id: I1c303504ffd63d6b9dbdf95ab63e8426dc09c02d
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
  • Loading branch information
Michael Brasser authored and Qt by Nokia committed Feb 16, 2012
1 parent 64a5087 commit 0d1f29c
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 6 deletions.
6 changes: 1 addition & 5 deletions src/quick/items/qquickitem.cpp
Expand Up @@ -4009,11 +4009,7 @@ bool QQuickItemPrivate::setEffectiveVisibleRecur(bool newEffectiveVisible)
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));
Expand Down
2 changes: 1 addition & 1 deletion src/quick/items/qquickitem.h
Expand Up @@ -168,7 +168,7 @@ class Q_QUICK_EXPORT QQuickItem : public QObject, public QDeclarativeParserStatu
ItemChildAddedChange, // value.item
ItemChildRemovedChange, // value.item
ItemSceneChange, // value.canvas
ItemVisibleHasChanged, // value.realValue
ItemVisibleHasChanged, // value.boolValue
ItemParentHasChanged, // value.item
ItemOpacityHasChanged, // value.realValue
ItemActiveFocusHasChanged, // value.boolValue
Expand Down
15 changes: 15 additions & 0 deletions tests/auto/qtquick2/qquickmousearea/data/hoverVisible.qml
@@ -0,0 +1,15 @@
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
}
}
}
30 changes: 30 additions & 0 deletions tests/auto/qtquick2/qquickmousearea/tst_qquickmousearea.cpp
Expand Up @@ -71,6 +71,7 @@ private slots:
void clickThrough();
void hoverPosition();
void hoverPropagation();
void hoverVisible();

private:
QQuickView *createView();
Expand Down Expand Up @@ -771,6 +772,35 @@ void tst_QQuickMouseArea::hoverPropagation()
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"

0 comments on commit 0d1f29c

Please sign in to comment.