aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCharles Yin <charles.yin@nokia.com>2012-03-07 09:34:18 +1000
committerQt by Nokia <qt-info@nokia.com>2012-03-07 03:59:46 +0100
commitcc6556c62c2e06f6d0b15383165772d06aa26066 (patch)
tree514e32bf48085387c149fd147ea1b2fc8fc59e87
parent14e00670b7393dd16e8896b2365e6d0c154c2d9a (diff)
Repaint the canvas item properly when canvas resized
Task-number:QTBUG-23594 Change-Id: I703a5190b5b306666ffd61001ff94f296399465f Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
-rw-r--r--src/quick/items/context2d/qquickcanvasitem.cpp25
-rw-r--r--src/quick/items/context2d/qquickcontext2dtexture.cpp1
2 files changed, 13 insertions, 13 deletions
diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp
index e2f57fe162..ed16ea0f38 100644
--- a/src/quick/items/context2d/qquickcanvasitem.cpp
+++ b/src/quick/items/context2d/qquickcanvasitem.cpp
@@ -463,30 +463,29 @@ void QQuickCanvasItem::sceneGraphInitialized()
void QQuickCanvasItem::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_D(QQuickCanvasItem);
- QQuickItem::geometryChanged(newGeometry, oldGeometry);
- const qreal w = newGeometry.width();
- const qreal h = newGeometry.height();
+ QQuickItem::geometryChanged(newGeometry, oldGeometry);
- if (!d->hasCanvasSize) {
- d->canvasSize = QSizeF(w, h);
+ QSizeF newSize = newGeometry.size();
+ if (!d->hasCanvasSize && d->canvasSize != newSize) {
+ d->canvasSize = newSize;
emit canvasSizeChanged();
}
- if (!d->hasTileSize) {
- d->tileSize = d->canvasSize.toSize();
+ if (!d->hasTileSize && d->tileSize != newSize) {
+ d->tileSize = newSize.toSize();
emit tileSizeChanged();
}
- if (!d->hasCanvasWindow) {
- d->canvasWindow = QRectF(0, 0, w, h);
+ const QRectF rect = QRectF(QPointF(0, 0), newSize);
+
+ if (!d->hasCanvasWindow && d->canvasWindow != rect) {
+ d->canvasWindow = rect;
emit canvasWindowChanged();
}
- if (d->available) {
- polish();
- update();
- }
+ if (d->available)
+ requestPaint();
}
void QQuickCanvasItem::componentComplete()
diff --git a/src/quick/items/context2d/qquickcontext2dtexture.cpp b/src/quick/items/context2d/qquickcontext2dtexture.cpp
index 60f58540f4..bdf147151e 100644
--- a/src/quick/items/context2d/qquickcontext2dtexture.cpp
+++ b/src/quick/items/context2d/qquickcontext2dtexture.cpp
@@ -177,6 +177,7 @@ void QQuickContext2DTexture::canvasChanged(const QSize& canvasSize, const QSize&
setCanvasSize(canvasSize);
setTileSize(ts);
+ setCanvasWindow(canvasWindow);
if (canvasSize == canvasWindow.size()) {
m_tiledCanvas = false;