diff options
author | Martin Jones <martin.jones@nokia.com> | 2010-12-02 03:07:29 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2010-12-02 03:28:47 (GMT) |
commit | b5a2e8bc3e49ed13d44d4273f5e65cda97c55db1 (patch) | |
tree | dae66ea79560b260aef183651bb8566a6f40ea7f | |
parent | 03ff62841c5dae85fde40982a65980a91c5f3109 (diff) | |
download | Qt-b5a2e8bc3e49ed13d44d4273f5e65cda97c55db1.zip Qt-b5a2e8bc3e49ed13d44d4273f5e65cda97c55db1.tar.gz Qt-b5a2e8bc3e49ed13d44d4273f5e65cda97c55db1.tar.bz2 |
Ensure semi-transparent rects paint correctly with radius == size/2.
The margins could overlap, which caused overpainting. Ensure the
margins are always <= width or height /2.
Task-number: QTBUG-14657
Reviewed-by: Yann Bodson
-rw-r--r-- | src/declarative/graphicsitems/qdeclarativerectangle.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp index 59d1a84..99b36a8 100644 --- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp +++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp @@ -541,6 +541,12 @@ void QDeclarativeRectangle::drawRect(QPainter &p) Q_ASSERT(d->rectImage.width() == 2*xOffset + 1); Q_ASSERT(d->rectImage.height() == 2*yOffset + 1); + // check whether we've eliminated the center completely + if (2*xOffset > width()+pw) + xOffset = (width()+pw)/2; + if (2*yOffset > height()+pw) + yOffset = (height()+pw)/2; + QMargins margins(xOffset, yOffset, xOffset, yOffset); QTileRules rules(Qt::StretchTile, Qt::StretchTile); //NOTE: even though our item may have qreal-based width and height, qDrawBorderPixmap only supports QRects |