diff options
Diffstat (limited to 'src/widgets/widgets/qdockwidget.cpp')
-rw-r--r-- | src/widgets/widgets/qdockwidget.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index 84cb78a474..6c871aae2c 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -45,6 +45,7 @@ #include <qdrawutil.h> #include <qevent.h> #include <qfontmetrics.h> +#include <qproxystyle.h> #include <qwindow.h> #include <qscreen.h> #include <qmainwindow.h> @@ -166,6 +167,10 @@ static inline bool isWindowsStyle(const QStyle *style) if (style->inherits("QStyleSheetStyle")) effectiveStyle = static_cast<const QStyleSheetStyle *>(style)->baseStyle(); #endif +#if !defined(QT_NO_STYLE_PROXY) + if (style->inherits("QProxyStyle")) + effectiveStyle = static_cast<const QProxyStyle *>(style)->baseStyle(); +#endif return effectiveStyle->inherits("QWindowsStyle"); } @@ -691,7 +696,6 @@ void QDockWidget::initStyleOption(QStyleOptionDockWidget *option) const // If we are in a floating tab, init from the parent because the attributes and the geometry // of the title bar should be taken from the floating window. option->initFrom(floatingTab && !isFloating() ? parentWidget() : this); - option->fontMetrics = QFontMetrics(d->font); option->rect = dwlayout->titleArea(); option->title = d->fixedWindowTitle; option->closable = hasFeature(this, QDockWidget::DockWidgetClosable); @@ -1468,6 +1472,7 @@ void QDockWidget::closeEvent(QCloseEvent *event) void QDockWidget::paintEvent(QPaintEvent *event) { Q_UNUSED(event) + Q_D(QDockWidget); QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(this->layout()); @@ -1488,7 +1493,11 @@ void QDockWidget::paintEvent(QPaintEvent *event) // the title may wish to extend out to all sides (eg. Vista style) QStyleOptionDockWidget titleOpt; initStyleOption(&titleOpt); - p.setFont(d_func()->font); + if (font() == QApplication::font("QDockWidget")) { + titleOpt.fontMetrics = QFontMetrics(d->font); + p.setFont(d->font); + } + p.drawControl(QStyle::CE_DockWidgetTitle, titleOpt); } } |