aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@digia.com>2014-02-21 15:04:21 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-28 14:32:47 +0100
commit0b2d05093c6fc030d40be8c873ad1e0af9bba8cc (patch)
treefb3830dd4c8377da665ef6423b84baef85a2fe64 /src
parent10f0485464acebd281f37b78f9ab5d02ee4ada9b (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.cpp17
-rw-r--r--src/quick/items/qquickwindow_p.h1
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;