summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index 8b29d7d9f0c..8b065bc33bc 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -889,6 +889,13 @@ static inline bool shouldApplyDarkFrame(const QWindow *w)
> windowPal.color(QPalette::Window).lightness();
}
+static inline int getTitleBarHeight_sys(const UINT dpi)
+{
+ // According to MS design manual, it should be 32px when DPI is 96.
+ return getResizeBorderThickness(dpi) +
+ ::GetSystemMetricsForDpi(SM_CYCAPTION, dpi);
+}
+
QWindowsWindowData
WindowCreationData::create(const QWindow *w, const WindowData &data, QString title) const
{
@@ -952,10 +959,12 @@ QWindowsWindowData
parentHandle, nullptr, appinst, nullptr);
if (w->flags().testFlags(Qt::ExpandedClientAreaHint)) {
+ const UINT dpi = ::GetDpiForWindow(result.hwnd);
+ const int titleBarHeight = getTitleBarHeight_sys(dpi);
result.hwndTitlebar = CreateWindowEx(WS_EX_LAYERED | WS_EX_TRANSPARENT,
classTitleBarNameUtf16, classTitleBarNameUtf16,
WS_POPUP, 0, 0,
- context->frameWidth, 32,
+ context->frameWidth, titleBarHeight,
result.hwnd, nullptr, appinst, nullptr);
}
@@ -2190,7 +2199,7 @@ QRect QWindowsWindow::normalGeometry() const
QMargins QWindowsWindow::safeAreaMargins() const
{
if (m_data.flags.testFlags(Qt::ExpandedClientAreaHint)) {
- const int titleBarHeight = SM_CYSIZEFRAME + SM_CYCAPTION;
+ const int titleBarHeight = getTitleBarHeight_sys(savedDpi());
return QMargins(0, titleBarHeight, 0, 0);
}
@@ -2407,7 +2416,8 @@ void QWindowsWindow::handleGeometryChange()
transitionAnimatedCustomTitleBar();
}
- MoveWindow(m_data.hwndTitlebar, m_data.geometry.x(), m_data.geometry.y(), m_data.geometry.width(), 32, true);
+ const int titleBarHeight = getTitleBarHeight_sys(savedDpi());
+ MoveWindow(m_data.hwndTitlebar, m_data.geometry.x(), m_data.geometry.y(), m_data.geometry.width(), titleBarHeight, true);
m_windowWasArranged = arranged;
}
@@ -3295,8 +3305,8 @@ bool QWindowsWindow::handleNonClientHitTest(const QPoint &globalPos, LRESULT *re
const int border = (IsZoomed(m_data.hwnd) || isFullScreen_sys()) ? 0 : getResizeBorderThickness(savedDpi());
if (isCustomized || isDefaultTitleBar) {
*result = HTCLIENT;
- const int titleBarHeight = SM_CYSIZEFRAME + SM_CYCAPTION;;
- const int titleButtonWidth = 46;
+ const int titleBarHeight = getTitleBarHeight_sys(savedDpi());
+ const int titleButtonWidth = titleBarHeight * 1.5;
int buttons = 1;
if (globalPos.y() < geom.top() + titleBarHeight) {
if (m_data.flags.testFlags(Qt::WindowCloseButtonHint) || isDefaultTitleBar) {
@@ -3452,8 +3462,8 @@ void QWindowsWindow::updateCustomTitlebar()
RECT windowRect;
GetWindowRect(hwnd, &windowRect);
- const int titleBarHeight = SM_CYSIZEFRAME + SM_CYCAPTION;;
- const int titleButtonWidth = 46;
+ const int titleBarHeight = getTitleBarHeight_sys(savedDpi());
+ const int titleButtonWidth = titleBarHeight * 1.5;
const int windowWidth = windowRect.right - windowRect.left;
POINT localPos;