# define MENUBAR_HEIGHT(mw) (mw->menuBar()->height())
#endif
+
+class QDeclarativeViewerTest : public QDeclarativeViewer
+{
+public:
+ QDeclarativeViewerTest() : QDeclarativeViewer(), resizeCount(0) {}
+
+ void resizeEvent (QResizeEvent *event) {
+ QDeclarativeViewer::resizeEvent(event);
+ ++resizeCount;
+ }
+
+ int resizeCount;
+};
+
class tst_QDeclarativeViewer : public QObject
{
void tst_QDeclarativeViewer::resizing()
{
- QDeclarativeViewer *viewer = new QDeclarativeViewer();
+ QDeclarativeViewerTest *viewer = new QDeclarativeViewerTest();
QVERIFY(viewer);
viewer->open(SRCDIR "/data/orientation.qml");
QVERIFY(viewer->view());
TEST_INITIAL_SIZES(viewer);
+ QCOMPARE(viewer->resizeCount, 1);
+
viewer->setSizeToView(false);
// size view to root object
QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(150, 200));
QCOMPARE(viewer->size(), QSize(150, 200 + MENUBAR_HEIGHT(viewer)));
+ QCOMPARE(viewer->resizeCount, 2);
+
// do not size root object to view
viewer->resize(QSize(180,250));
QCOMPARE(rootItem->width(), 150.0);
QCOMPARE(viewer->size(), QSize(250, 350));
// do not size view to root object
+ viewer->resizeCount = 0;
+
rootItem->setWidth(150);
rootItem->setHeight(200);
QTRY_COMPARE(viewer->size(), QSize(250, 350));
+ QCOMPARE(viewer->resizeCount, 0);
+
delete viewer;
}
canvas->setFocus();
- QObject::connect(canvas, SIGNAL(sceneResized(QSize)), this, SLOT(sceneResized(QSize)));
+ QObject::connect(canvas, SIGNAL(initialSizeChanged(QSize)), this, SLOT(initialSizeChanged(QSize)));
QObject::connect(canvas, SIGNAL(statusChanged(QDeclarativeView::Status)), this, SLOT(statusChanged()));
QObject::connect(canvas->engine(), SIGNAL(quit()), this, SLOT(close()));
if (canvas->status() == QDeclarativeView::Ready) {
initialSize = canvas->initialSize();
updateSizeHints(true);
+ QObject::connect(canvas, SIGNAL(sceneResized(QSize)), this, SLOT(sceneResized(QSize)));
}
}
QTime t;
t.start();
+ QObject::disconnect(canvas, SIGNAL(sceneResized(QSize)), this, SLOT(sceneResized(QSize)));
canvas->setSource(url);
return true;
updateSizeHints();
}
+void QDeclarativeViewer::initialSizeChanged(QSize size)
+{
+ if (!isFullScreen() && !isMaximized()) {
+ canvas->setFixedSize(size);
+ layout()->setSizeConstraint(QLayout::SetFixedSize);
+ layout()->activate();
+ }
+}
+
void QDeclarativeViewer::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_0 && devicemode)