summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWladimir Leuschner <[email protected]>2024-03-05 16:47:54 +0100
committerWladimir Leuschner <[email protected]>2024-03-15 03:59:26 +0000
commitdf24438e6a2adb344d78628e7a79432f88fab5e9 (patch)
treeb44d31ead0ac329f7ffe8137445f58aee2736f44
parentc6fff128d7ca3f8296c805aca7212f7bea48f5a9 (diff)
QWindows11Style: HighDPI aware qDrawPlainRoundedRect
Pick-to: 6.7 Change-Id: Ic9562a20bce59c265c539a1378f5f8fd8e9e9a17 Reviewed-by: Alessandro Portale <[email protected]>
-rw-r--r--src/plugins/styles/modernwindows/qwindows11style.cpp18
-rw-r--r--src/widgets/styles/qdrawutil.cpp7
2 files changed, 17 insertions, 8 deletions
diff --git a/src/plugins/styles/modernwindows/qwindows11style.cpp b/src/plugins/styles/modernwindows/qwindows11style.cpp
index a076e8fde92..15f06f86d22 100644
--- a/src/plugins/styles/modernwindows/qwindows11style.cpp
+++ b/src/plugins/styles/modernwindows/qwindows11style.cpp
@@ -736,19 +736,19 @@ void QWindows11Style::drawPrimitive(PrimitiveElement element, const QStyleOption
painter->setPen(highContrastTheme == true ? option->palette.buttonText().color() : WINUI3Colors[colorSchemeIndex][frameColorLight]);
painter->setBrush(Qt::NoBrush);
- painter->drawRoundedRect(tipRect.marginsAdded(QMargins(0.5,0.5,0.5,0.5)), secondLevelRoundingRadius, secondLevelRoundingRadius);
+ painter->drawRoundedRect(tipRect.marginsAdded(QMarginsF(0.5,0.5,0.5,0.5)), secondLevelRoundingRadius, secondLevelRoundingRadius);
break;
}
case PE_FrameTabWidget:
if (const QStyleOptionTabWidgetFrame *frame = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) {
- QRectF frameRect = frame->rect.marginsRemoved(QMargins(1,1,1,1));
+ QRectF frameRect = frame->rect.marginsRemoved(QMargins(0,0,0,0));
painter->setPen(Qt::NoPen);
painter->setBrush(frame->palette.base());
painter->drawRoundedRect(frameRect, secondLevelRoundingRadius, secondLevelRoundingRadius);
painter->setPen(highContrastTheme == true ? frame->palette.buttonText().color() : WINUI3Colors[colorSchemeIndex][frameColorLight]);
painter->setBrush(Qt::NoBrush);
- painter->drawRoundedRect(frameRect.marginsAdded(QMargins(0.5,0.5,0.5,0.5)), secondLevelRoundingRadius, secondLevelRoundingRadius);
+ painter->drawRoundedRect(frameRect.marginsRemoved(QMarginsF(0.5,0.5,0.5,0.5)), secondLevelRoundingRadius, secondLevelRoundingRadius);
}
break;
case PE_FrameGroupBox:
@@ -855,8 +855,14 @@ void QWindows11Style::drawPrimitive(PrimitiveElement element, const QStyleOption
}
break;
case PE_PanelButtonBevel:{
- QRect rect = option->rect.marginsRemoved(QMargins(2,2,2,2));
+ QRectF rect = option->rect.marginsRemoved(QMargins(2,2,2,2));
+ rect.adjust(-0.5,-0.5,0.5,0.5);
+ painter->setBrush(Qt::NoBrush);
painter->setPen(QPen(WINUI3Colors[colorSchemeIndex][controlStrokePrimary]));
+ painter->drawRoundedRect(rect, secondLevelRoundingRadius, secondLevelRoundingRadius);
+
+ rect = option->rect.marginsRemoved(QMargins(2,2,2,2));
+ painter->setPen(Qt::NoPen);
if (!(state & (State_Raised)))
painter->setBrush(WINUI3Colors[colorSchemeIndex][controlFillTertiary]);
else if (state & State_MouseOver)
@@ -917,7 +923,7 @@ void QWindows11Style::drawPrimitive(PrimitiveElement element, const QStyleOption
if (const auto *frame = qstyleoption_cast<const QStyleOptionFrame *>(option)) {
if (frame->frameShape == QFrame::NoFrame)
break;
- QRectF rect = option->rect.adjusted(2,2,-2,-2);
+ QRectF rect = option->rect.adjusted(1,1,-1,-1);
if (widget && widget->inherits("QComboBoxPrivateContainer")) {
painter->setPen(Qt::NoPen);
painter->setBrush(WINUI3Colors[colorSchemeIndex][menuPanelFill]);
@@ -930,7 +936,7 @@ void QWindows11Style::drawPrimitive(PrimitiveElement element, const QStyleOption
painter->setBrush(Qt::NoBrush);
painter->setPen(QPen(WINUI3Colors[colorSchemeIndex][frameColorLight]));
- painter->drawRoundedRect(rect.marginsAdded(QMargins(0.5,0.5,0.5,0.5)), secondLevelRoundingRadius, secondLevelRoundingRadius);
+ painter->drawRoundedRect(rect.marginsRemoved(QMarginsF(0.5,0.5,0.5,0.5)), secondLevelRoundingRadius, secondLevelRoundingRadius);
if (widget && widget->inherits("QTextEdit")) {
QRegion clipRegion = option->rect;
diff --git a/src/widgets/styles/qdrawutil.cpp b/src/widgets/styles/qdrawutil.cpp
index 41b4886f2f9..5bdbdb11395 100644
--- a/src/widgets/styles/qdrawutil.cpp
+++ b/src/widgets/styles/qdrawutil.cpp
@@ -664,8 +664,11 @@ void qDrawPlainRoundedRect(QPainter *p, int x, int y, int w, int h,
p->save();
p->setPen(c);
p->setBrush(Qt::NoBrush);
- for (int i=0; i<lineWidth; i++)
- p->drawRoundedRect(x+i, y+i, w-i*2 - 1, h-i*2 - 1, rx, ry);
+ for (int i=0; i<lineWidth; i++) {
+ QRectF rect(x+i, y+i, w-i*2 - 1, h-i*2 - 1);
+ rect.marginsRemoved(QMarginsF(0.5,0.5,0.5,0.5));
+ p->drawRoundedRect(rect, rx, ry);
+ }
if (fill) { // fill with fill color
p->setPen(Qt::NoPen);
p->setBrush(*fill);