diff options
author | Jens Bache-Wiig <jens.bache-wiig@digia.com> | 2012-09-26 17:27:05 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-09-27 15:37:29 +0200 |
commit | 9bdd7e2239a3ff66ffc469834a094c9b5a111ab9 (patch) | |
tree | fde29f5b7571499d18b8ebd0c3616f389b8e7cf9 | |
parent | b80216c9f38c6e129bc7c779f5b769f0aa86441b (diff) |
More consistent dock widget painting on Windows
Before we would draw dock widget handles on windows classic
and no handles on XP, Vista and Windows 8. This would make it
very hard to make a consistent look and feel across those styles.
I also added a workaround to avoid the redundant toolbar borders
when they are used outside of the toolbar areas.
Change-Id: Ib703453677fcac8d51b2180abe45527297af0a80
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
-rw-r--r-- | src/widgets/styles/qwindowsstyle.cpp | 41 | ||||
-rw-r--r-- | src/widgets/styles/qwindowsvistastyle.cpp | 3 |
2 files changed, 12 insertions, 32 deletions
diff --git a/src/widgets/styles/qwindowsstyle.cpp b/src/widgets/styles/qwindowsstyle.cpp index dccf88ac26..355ecf8a35 100644 --- a/src/widgets/styles/qwindowsstyle.cpp +++ b/src/widgets/styles/qwindowsstyle.cpp @@ -377,6 +377,9 @@ int QWindowsStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QW case PM_MenuVMargin: ret = 1; break; + case PM_DockWidgetSeparatorExtent: + ret = int(QStyleHelper::dpiScaled(4.)); + break; #ifndef QT_NO_TABBAR case PM_TabBarTabShiftHorizontal: ret = 0; @@ -1699,31 +1702,9 @@ void QWindowsStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, qDrawWinPanel(p, opt->rect, popupPal, opt->state & State_Sunken); break; } #ifndef QT_NO_DOCKWIDGET - case PE_IndicatorDockWidgetResizeHandle: { - QPen oldPen = p->pen(); - p->setPen(opt->palette.light().color()); - if (opt->state & State_Horizontal) { - p->drawLine(opt->rect.left(), opt->rect.top(), - opt->rect.right(), opt->rect.top()); - p->setPen(opt->palette.dark().color()); - p->drawLine(opt->rect.left(), opt->rect.bottom() - 1, - opt->rect.right(), opt->rect.bottom() - 1); - p->setPen(opt->palette.shadow().color()); - p->drawLine(opt->rect.left(), opt->rect.bottom(), - opt->rect.right(), opt->rect.bottom()); - } else { - p->drawLine(opt->rect.left(), opt->rect.top(), - opt->rect.left(), opt->rect.bottom()); - p->setPen(opt->palette.dark().color()); - p->drawLine(opt->rect.right() - 1, opt->rect.top(), - opt->rect.right() - 1, opt->rect.bottom()); - p->setPen(opt->palette.shadow().color()); - p->drawLine(opt->rect.right(), opt->rect.top(), - opt->rect.right(), opt->rect.bottom()); - } - p->setPen(oldPen); - break; } -case PE_FrameDockWidget: + case PE_IndicatorDockWidgetResizeHandle: + break; + case PE_FrameDockWidget: if (qstyleoption_cast<const QStyleOptionFrame *>(opt)) { proxy()->drawPrimitive(QStyle::PE_FrameWindow, opt, p, w); } @@ -2286,8 +2267,11 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai #ifndef QT_NO_TOOLBAR case CE_ToolBar: if (const QStyleOptionToolBar *toolbar = qstyleoption_cast<const QStyleOptionToolBar *>(opt)) { - QRect rect = opt->rect; + // Reserve the beveled appearance only for mainwindow toolbars + if (!(widget && qobject_cast<const QMainWindow*> (widget->parentWidget()))) + break; + QRect rect = opt->rect; bool paintLeftBorder = true; bool paintRightBorder = true; bool paintBottomBorder = true; @@ -2513,11 +2497,6 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai } p->fillRect(r.adjusted(0, 0, 0, -3), fillBrush); } - p->setPen(dwOpt->palette.color(QPalette::Light)); - if (!widget || !widget->isWindow()) { - p->drawLine(r.topLeft(), r.topRight()); - p->setPen(dwOpt->palette.color(QPalette::Dark)); - p->drawLine(r.bottomLeft(), r.bottomRight()); } } if (!dwOpt->title.isEmpty()) { QFont oldFont = p->font(); diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp index cc94d67ed3..cb34a20fa3 100644 --- a/src/widgets/styles/qwindowsvistastyle.cpp +++ b/src/widgets/styles/qwindowsvistastyle.cpp @@ -1511,7 +1511,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption if (!dwOpt->title.isEmpty()) { QString titleText = painter->fontMetrics().elidedText(dwOpt->title, Qt::ElideRight, verticalTitleBar ? titleRect.height() : titleRect.width()); - const int indent = painter->fontMetrics().descent(); + const int indent = 4; drawItemText(painter, rect.adjusted(indent + 1, 1, -indent - 1, -1), Qt::AlignLeft | Qt::AlignVCenter, dwOpt->palette, dwOpt->state & State_Enabled, titleText, @@ -1524,6 +1524,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption case CE_ItemViewItem: { const QStyleOptionViewItem *vopt; + const QAbstractItemView *view = qobject_cast<const QAbstractItemView *>(widget); bool newStyle = true; |