diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2014-02-21 15:04:21 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-28 14:32:47 +0100 |
commit | 0b2d05093c6fc030d40be8c873ad1e0af9bba8cc (patch) | |
tree | fb3830dd4c8377da665ef6423b84baef85a2fe64 /src | |
parent | 10f0485464acebd281f37b78f9ab5d02ee4ada9b (diff) |
QQuickWindow: fix content item size
Resize content item in QQuickWindow::resizeEvent() instead of using
signals and slots. The signal-slot connections were only established
when child items were added in QML. It should work in C++ too, since
QQuickWindow and QQuickItem are part of the public C++ API and using
them in C++ is a perfectly valid use case.
Resizing the content item in resizeEvent() is not only faster than
using signals and slots, but also in theory a bit more flexible as
one would be able to override the event handler and implement their
own layouting.
Task-number: QTBUG-36938
Change-Id: Id05d4cf6d547021803050633e6f0a3359129a9f3
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 17 | ||||
-rw-r--r-- | src/quick/items/qquickwindow_p.h | 1 |
2 files changed, 4 insertions, 14 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index 4eb41a27cd..bbc4e8b55c 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -216,9 +216,11 @@ void QQuickWindow::exposeEvent(QExposeEvent *) } /*! \reimp */ -void QQuickWindow::resizeEvent(QResizeEvent *) +void QQuickWindow::resizeEvent(QResizeEvent *ev) { Q_D(QQuickWindow); + if (d->contentItem) + d->contentItem->setSize(ev->size()); if (d->windowManager) d->windowManager->resize(this); } @@ -433,6 +435,7 @@ void QQuickWindowPrivate::init(QQuickWindow *c, QQuickRenderControl *control) contentItemPrivate->window = q; contentItemPrivate->windowRefCount = 1; contentItemPrivate->flags |= QQuickItem::ItemIsFocusScope; + contentItem->setSize(q->size()); customRenderMode = qgetenv("QSG_VISUALIZE"); renderControl = control; @@ -474,24 +477,12 @@ void QQuickWindowPrivate::init(QQuickWindow *c, QQuickRenderControl *control) QQmlListProperty<QObject> QQuickWindowPrivate::data() { - initContentItem(); return QQmlListProperty<QObject>(q_func(), 0, QQuickWindowPrivate::data_append, QQuickWindowPrivate::data_count, QQuickWindowPrivate::data_at, QQuickWindowPrivate::data_clear); } -void QQuickWindowPrivate::initContentItem() -{ - Q_Q(QQuickWindow); - q->connect(q, SIGNAL(widthChanged(int)), - contentItem, SLOT(setWidth(int))); - q->connect(q, SIGNAL(heightChanged(int)), - contentItem, SLOT(setHeight(int))); - contentItem->setWidth(q->width()); - contentItem->setHeight(q->height()); -} - static QMouseEvent *touchToMouseEvent(QEvent::Type type, const QTouchEvent::TouchPoint &p, QTouchEvent *event, QQuickItem *item, bool transformNeeded = true) { // The touch point local position and velocity are not yet transformed. diff --git a/src/quick/items/qquickwindow_p.h b/src/quick/items/qquickwindow_p.h index 50f4a289f8..8b6073c30a 100644 --- a/src/quick/items/qquickwindow_p.h +++ b/src/quick/items/qquickwindow_p.h @@ -105,7 +105,6 @@ public: virtual ~QQuickWindowPrivate(); void init(QQuickWindow *, QQuickRenderControl *control = 0); - void initContentItem();//Currently only used if items added in QML QQuickRootItem *contentItem; QSet<QQuickItem *> parentlessItems; |