diff options
author | Gabriel de Dietrich <gabriel.dietrich-de@nokia.com> | 2009-08-12 15:41:11 (GMT) |
---|---|---|
committer | Gabriel de Dietrich <gabriel.dietrich-de@nokia.com> | 2009-08-12 16:32:02 (GMT) |
commit | 0c992f560a0872ccdc4a44cf4d1c7da627cc6807 (patch) | |
tree | abdef86516e0bb594eba7f60b23ed2b51a2c8a33 /src/gui/painting | |
parent | 77feedfa3c00dc39df65bd4f567c9d43e8e25b4f (diff) | |
download | Qt-0c992f560a0872ccdc4a44cf4d1c7da627cc6807.zip Qt-0c992f560a0872ccdc4a44cf4d1c7da627cc6807.tar.gz Qt-0c992f560a0872ccdc4a44cf4d1c7da627cc6807.tar.bz2 |
Ugly round corners when no border is drawn
When specifying round corners with QStyleSheetStyle and no border-width
specified, the round corners were not rendered with antialiasing. Furthermore,
if border-width was set to 0, part of the border was rendered in discordance
with CSS3.
The background in now rendered directly instead of drawing a clipped
rectangle. The actual border width is checked before rendering.
A test has been added at tests/auto/uiloader/baseline/css_borderradius_allwidgets.ui
Task-number: 230362
Reviewed-by: olivier
Diffstat (limited to 'src/gui/painting')
-rw-r--r-- | src/gui/painting/qcssutil.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/gui/painting/qcssutil.cpp b/src/gui/painting/qcssutil.cpp index ac0ea08..ae8afed 100644 --- a/src/gui/painting/qcssutil.cpp +++ b/src/gui/painting/qcssutil.cpp @@ -353,7 +353,7 @@ void qDrawBorder(QPainter *p, const QRect &rect, const QCss::BorderStyle *styles qNormalizeRadii(rect, radii, &tlr, &trr, &blr, &brr); // Drawn in increasing order of precendence - if (styles[BottomEdge] != BorderStyle_None) { + if (styles[BottomEdge] != BorderStyle_None && borders[BottomEdge] > 0) { qreal dw1 = (blr.width() || paintsOver(styles, colors, BottomEdge, LeftEdge)) ? 0 : borders[LeftEdge]; qreal dw2 = (brr.width() || paintsOver(styles, colors, BottomEdge, RightEdge)) ? 0 : borders[RightEdge]; qreal x1 = br.x() + blr.width(); @@ -365,7 +365,7 @@ void qDrawBorder(QPainter *p, const QRect &rect, const QCss::BorderStyle *styles if (blr.width() || brr.width()) qDrawRoundedCorners(p, x1, y1, x2, y2, blr, brr, BottomEdge, styles[BottomEdge], colors[BottomEdge]); } - if (styles[RightEdge] != BorderStyle_None) { + if (styles[RightEdge] != BorderStyle_None && borders[RightEdge] > 0) { qreal dw1 = (trr.height() || paintsOver(styles, colors, RightEdge, TopEdge)) ? 0 : borders[TopEdge]; qreal dw2 = (brr.height() || paintsOver(styles, colors, RightEdge, BottomEdge)) ? 0 : borders[BottomEdge]; qreal x1 = br.x() + br.width() - borders[RightEdge]; @@ -377,7 +377,7 @@ void qDrawBorder(QPainter *p, const QRect &rect, const QCss::BorderStyle *styles if (trr.height() || brr.height()) qDrawRoundedCorners(p, x1, y1, x2, y2, trr, brr, RightEdge, styles[RightEdge], colors[RightEdge]); } - if (styles[LeftEdge] != BorderStyle_None) { + if (styles[LeftEdge] != BorderStyle_None && borders[LeftEdge] > 0) { qreal dw1 = (tlr.height() || paintsOver(styles, colors, LeftEdge, TopEdge)) ? 0 : borders[TopEdge]; qreal dw2 = (blr.height() || paintsOver(styles, colors, LeftEdge, BottomEdge)) ? 0 : borders[BottomEdge]; qreal x1 = br.x(); @@ -389,7 +389,7 @@ void qDrawBorder(QPainter *p, const QRect &rect, const QCss::BorderStyle *styles if (tlr.height() || blr.height()) qDrawRoundedCorners(p, x1, y1, x2, y2, tlr, blr, LeftEdge, styles[LeftEdge], colors[LeftEdge]); } - if (styles[TopEdge] != BorderStyle_None) { + if (styles[TopEdge] != BorderStyle_None && borders[TopEdge] > 0) { qreal dw1 = (tlr.width() || paintsOver(styles, colors, TopEdge, LeftEdge)) ? 0 : borders[LeftEdge]; qreal dw2 = (trr.width() || paintsOver(styles, colors, TopEdge, RightEdge)) ? 0 : borders[RightEdge]; qreal x1 = br.x() + tlr.width(); |