From 49c251e0543ea80e69d1725bb08bb4dfe3f225ab Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Tue, 14 Aug 2012 08:52:08 +0200 Subject: Ensure child items are updated even if the parent item has no content When a parent item had its visiblity toggled, then the child item would not update if the parent item had ItemHasNoContents and ItemClipsChildrenToShape set. This is a common use case in declarative as the root item has ItemHasNoContents set. Task-number: QTBUG-26846 Change-Id: Id6592ebc4ba2caa4331a4a71f7247e40993131b6 Reviewed-by: Friedemann Kleint --- tests/manual/manual.pro | 1 + tests/manual/qgraphicsitem/main.cpp | 81 ++++++++++++++++++++++++++++ tests/manual/qgraphicsitem/qgraphicsitem.pro | 2 + 3 files changed, 84 insertions(+) create mode 100644 tests/manual/qgraphicsitem/main.cpp create mode 100644 tests/manual/qgraphicsitem/qgraphicsitem.pro (limited to 'tests/manual') diff --git a/tests/manual/manual.pro b/tests/manual/manual.pro index ef72a5eec4..8d36a7118a 100644 --- a/tests/manual/manual.pro +++ b/tests/manual/manual.pro @@ -9,6 +9,7 @@ network_remote_stresstest \ network_stresstest \ qcursor \ qdesktopwidget \ +qgraphicsitem \ qgraphicsitemgroup \ qgraphicslayout/flicker \ qhttpnetworkconnection \ diff --git a/tests/manual/qgraphicsitem/main.cpp b/tests/manual/qgraphicsitem/main.cpp new file mode 100644 index 0000000000..dc0b1180a2 --- /dev/null +++ b/tests/manual/qgraphicsitem/main.cpp @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include + +class MyObject : public QObject +{ +public: + MyObject(QGraphicsItem *i, QObject *parent = 0) : QObject(parent), itemToToggle(i) + { + startTimer(500); + } +protected: + void timerEvent(QTimerEvent *) + { + itemToToggle->setVisible(!itemToToggle->isVisible()); + } +private: + QGraphicsItem *itemToToggle; +}; + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + QGraphicsView gv; + QGraphicsScene *scene = new QGraphicsScene(&gv); + gv.setScene(scene); + QGraphicsItem *rect = scene->addRect(0, 0, 200, 200, QPen(Qt::NoPen), QBrush(Qt::yellow)); + rect->setFlag(QGraphicsItem::ItemHasNoContents); + rect->setFlag(QGraphicsItem::ItemClipsChildrenToShape); + + QGraphicsItem *childRect = scene->addRect(0, 0, 100, 100, QPen(Qt::NoPen), QBrush(Qt::red)); + childRect->setParentItem(rect); + gv.show(); + MyObject o(rect); + QMessageBox::information(0, "What you should see", + "The red rectangle should toggle visiblity, so you should see it flash on and off"); + return a.exec(); +} diff --git a/tests/manual/qgraphicsitem/qgraphicsitem.pro b/tests/manual/qgraphicsitem/qgraphicsitem.pro new file mode 100644 index 0000000000..3523257f3e --- /dev/null +++ b/tests/manual/qgraphicsitem/qgraphicsitem.pro @@ -0,0 +1,2 @@ +QT += widgets +SOURCES += main.cpp -- cgit v1.2.3