diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2009-09-04 04:02:49 (GMT) |
---|---|---|
committer | Michael Brasser <michael.brasser@nokia.com> | 2009-09-04 04:02:49 (GMT) |
commit | eed800e044551118797c5e54fd4fcae9080fa669 (patch) | |
tree | 09199623f8bded7205d8db539f4d6150bc6528cd | |
parent | 68a2c152e6c13d63bc77309bebb5cac260937e68 (diff) | |
parent | 5974c8a7216459e1ce820c42e448b49cea49a778 (diff) | |
download | Qt-eed800e044551118797c5e54fd4fcae9080fa669.zip Qt-eed800e044551118797c5e54fd4fcae9080fa669.tar.gz Qt-eed800e044551118797c5e54fd4fcae9080fa669.tar.bz2 |
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
-rw-r--r-- | demos/declarative/webbrowser/webbrowser.qml | 31 | ||||
-rw-r--r-- | src/declarative/fx/qfxflickable.cpp | 4 | ||||
-rw-r--r-- | src/declarative/fx/qfxpainteditem.cpp | 14 | ||||
-rw-r--r-- | src/gui/graphicsview/qgraphicsitem.cpp | 4 |
4 files changed, 32 insertions, 21 deletions
diff --git a/demos/declarative/webbrowser/webbrowser.qml b/demos/declarative/webbrowser/webbrowser.qml index 4c4ad7c..9a8af29 100644 --- a/demos/declarative/webbrowser/webbrowser.qml +++ b/demos/declarative/webbrowser/webbrowser.qml @@ -190,7 +190,7 @@ Item { } url: fixUrl(WebBrowser.urlString) - smooth: false + smooth: true fillColor: "white" focus: true @@ -215,14 +215,14 @@ Item { property: "scale" from: 1 to: 0 // set before calling - easing: "easeInOutQuad" + easing: "easeLinear" duration: 200 } NumberAnimation { id: FlickVX target: Flick property: "viewportX" - easing: "easeInOutQuad" + easing: "easeLinear" duration: 200 from: 0 // set before calling to: 0 // set before calling @@ -231,21 +231,36 @@ Item { id: FlickVY target: Flick property: "viewportY" - easing: "easeInOutQuad" + easing: "easeLinear" duration: 200 from: 0 // set before calling to: 0 // set before calling } } PropertyAction { + id: FinalZoom + target: MyWebView + property: "zoomFactor" + } + PropertyAction { target: MyWebView property: "scale" value: 1.0 } + // Have to set the viewportXY, since the above 2 + // size changes may have started a correction if + // zoomFactor < 1.0. PropertyAction { - id: FinalZoom - target: MyWebView - property: "zoomFactor" + id: FinalX + target: Flick + property: "viewportX" + value: 0 // set before calling + } + PropertyAction { + id: FinalY + target: Flick + property: "viewportY" + value: 0 // set before calling } PropertyAction { target: MyWebView @@ -259,8 +274,10 @@ Item { ScaleAnim.to = sc; FlickVX.from = Flick.viewportX FlickVX.to = Math.min(Math.max(0,centerX-Flick.width/2),MyWebView.width*sc-Flick.width) + FinalX.value = Math.min(Math.max(0,centerX-Flick.width/2),MyWebView.width*sc-Flick.width) FlickVY.from = Flick.viewportY FlickVY.to = Math.min(Math.max(0,centerY-Flick.height/2),MyWebView.height*sc-Flick.height) + FinalY.value = Math.min(Math.max(0,centerY-Flick.height/2),MyWebView.height*sc-Flick.height) FinalZoom.value = zoom QuickZoom.start() } diff --git a/src/declarative/fx/qfxflickable.cpp b/src/declarative/fx/qfxflickable.cpp index 0ea50b8..007fa0e 100644 --- a/src/declarative/fx/qfxflickable.cpp +++ b/src/declarative/fx/qfxflickable.cpp @@ -433,8 +433,8 @@ void QFxFlickable::setViewportX(qreal pos) { Q_D(QFxFlickable); pos = qRound(pos); + d->timeline.reset(d->_moveX); if (-pos != d->_moveX.value()) { - d->timeline.reset(d->_moveX); d->_moveX.setValue(-pos); viewportMoved(); } @@ -450,8 +450,8 @@ void QFxFlickable::setViewportY(qreal pos) { Q_D(QFxFlickable); pos = qRound(pos); + d->timeline.reset(d->_moveY); if (-pos != d->_moveY.value()) { - d->timeline.reset(d->_moveY); d->_moveY.setValue(-pos); viewportMoved(); } diff --git a/src/declarative/fx/qfxpainteditem.cpp b/src/declarative/fx/qfxpainteditem.cpp index 695236d..cbd00cf 100644 --- a/src/declarative/fx/qfxpainteditem.cpp +++ b/src/declarative/fx/qfxpainteditem.cpp @@ -208,12 +208,6 @@ void QFxPaintedItem::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidge ++inpaint; - bool oldAntiAliasing = p->testRenderHint(QPainter::Antialiasing); - bool oldSmoothPixmap = p->testRenderHint(QPainter::SmoothPixmapTransform); - if (oldAntiAliasing) - p->setRenderHints(QPainter::Antialiasing, false); // cannot stitch properly otherwise - if (d->smooth) - p->setRenderHints(QPainter::SmoothPixmapTransform, true); QRectF clipf = p->clipRegion().boundingRect(); if (clipf.isEmpty()) clipf = mapToScene(content).boundingRect(); // ### Inefficient: Maps toScene and then fromScene @@ -234,6 +228,7 @@ void QFxPaintedItem::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidge if (!d->cachefrozen) { if (!d->imagecache[i]->dirty.isNull() && topaint.contains(d->imagecache[i]->dirty)) { QPainter qp(&d->imagecache[i]->image); + qp.setRenderHints(QPainter::HighQualityAntialiasing | QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform, d->smooth); qp.translate(-area.x(), -area.y()); if (d->fillColor.isValid()) qp.fillRect(d->imagecache[i]->dirty,d->fillColor); @@ -280,6 +275,8 @@ void QFxPaintedItem::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidge img.fill(d->fillColor); { QPainter qp(&img); + qp.setRenderHints(QPainter::HighQualityAntialiasing | QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform, d->smooth); + qp.translate(-r.x(),-r.y()); drawContents(&qp, r); } @@ -296,11 +293,6 @@ void QFxPaintedItem::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidge } } - if (oldAntiAliasing) - p->setRenderHints(QPainter::Antialiasing, oldAntiAliasing); - if (d->smooth) - p->setRenderHints(QPainter::SmoothPixmapTransform, oldSmoothPixmap); - if (inpaint_clearcache) { clearCache(); inpaint_clearcache = 0; diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 4cb4dcf..1d55534 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -4789,10 +4789,12 @@ void QGraphicsItemPrivate::updateCachedClipPathFromSetPosHelper(const QPointF &n if (transformData) thisToParentTransform = transformData->computedFullTransform(&thisToParentTransform); QGraphicsItem *clipParent = parent; - while (clipParent && !(clipParent->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape)) { + while (clipParent && !clipParent->d_ptr->inDestructor && !(clipParent->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape)) { thisToParentTransform *= clipParent->d_ptr->transformToParent(); clipParent = clipParent->d_ptr->parent; } + if (clipParent && clipParent->d_ptr->inDestructor) + return; // thisToParentTransform is now the same as q->itemTransform(clipParent), except // that the new position (which is not yet set on the item) is taken into account. |