summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2009-09-04 04:02:49 (GMT)
committerMichael Brasser <michael.brasser@nokia.com>2009-09-04 04:02:49 (GMT)
commiteed800e044551118797c5e54fd4fcae9080fa669 (patch)
tree09199623f8bded7205d8db539f4d6150bc6528cd
parent68a2c152e6c13d63bc77309bebb5cac260937e68 (diff)
parent5974c8a7216459e1ce820c42e448b49cea49a778 (diff)
downloadQt-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.qml31
-rw-r--r--src/declarative/fx/qfxflickable.cpp4
-rw-r--r--src/declarative/fx/qfxpainteditem.cpp14
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp4
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.