diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-05-28 10:00:45 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-05-29 05:00:14 +0000 |
commit | 0a7fcfd61263bc156b780c5e48656c00c64721ed (patch) | |
tree | edde80d3e45818eb4782831453c74f828c137fbe /src/plugins/platforms/windows/qwindowsnativeinterface.cpp | |
parent | a47dbb010f2bf423a6f0a63bae6676a2788cdfdb (diff) |
Windows: Fix font metrics of Vista style wizards.
QVistaHelper::drawTitleBar() used the font returned by
QApplication::font("QMdiSubWindowTitleBar")
(typically "MS Shell Dlg 2",16) to calculate the
bounding rectangle of the title text. However, if the window
is a toplevel QVistaHelper::drawTitleText() uses the theme font
obtained for WIZ_TMT_CAPTIONFONT (typically "Segoe UI",11.25)
to draw the title (since it is a window title). This causes the
font to be cropped when changing the application font or spurious
black rectangles to occur.
Fix this by exposing QWindowsFontDatabase::LOGFONT_to_QFont() via
QWindowsNativeInterface, and creating a QFont from the LOGFONT
obtained for WIZ_TMT_CAPTIONFONT and using that for the
bounding rectangle in the case of toplevel windows.
Split up the HFONT QVistaHelper::getCaptionFont(HANDLE hTheme)
into static LOGFONT getCaptionLogFont(HANDLE hTheme) and use
that to obtain the HFONT in drawTitleText() or QFont in
static QFont getCaptionQFont(), respectively.
Task-number: QTBUG-46360
Change-Id: I9069b403f7f948b6738eec452cb7584be45b8a29
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsnativeinterface.cpp')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsnativeinterface.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/plugins/platforms/windows/qwindowsnativeinterface.cpp b/src/plugins/platforms/windows/qwindowsnativeinterface.cpp index 9691156403..6e58c55bbe 100644 --- a/src/plugins/platforms/windows/qwindowsnativeinterface.cpp +++ b/src/plugins/platforms/windows/qwindowsnativeinterface.cpp @@ -34,6 +34,7 @@ #include "qwindowsnativeinterface.h" #include "qwindowswindow.h" #include "qwindowscontext.h" +#include "qwindowsfontdatabase.h" #include "qwindowsopenglcontext.h" #include "qwindowsopengltester.h" #include "qwindowsintegration.h" @@ -222,6 +223,11 @@ int QWindowsNativeInterface::registerMimeType(const QString &mimeType) return QWindowsMime::registerMimeType(mimeType); } +QFont QWindowsNativeInterface::logFontToQFont(const void *logFont, int verticalDpi) +{ + return QWindowsFontDatabase::LOGFONT_to_QFont(*reinterpret_cast<const LOGFONT *>(logFont), verticalDpi); +} + QFunctionPointer QWindowsNativeInterface::platformFunction(const QByteArray &function) const { if (function == QWindowsWindowFunctions::setTouchWindowTouchTypeIdentifier()) |