Windows QPA: fix window style correction for context help button
According to Microsoft Docs [1][2], WS_MINIMIZEBOX and WS_MAXIMIZEBOX must be accompanied by the WS_SYSMENU style, and the WS_EX_CONTEXTHELP style is not compatible with WS_MINIMIZEBOX and WS_MAXIMIZEBOX. This patch adds additional checks for these situations. [1] https://docs.microsoft.com/en-us/windows/win32/winmsg/window-styles [2] https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles Change-Id: If32f8b42e25cfc67ffd1e84cc4b061f21a01042a Reviewed-by: André de la Rocha <andre.rocha@qt.io> (cherry picked from commit 7261c811528c4c05e3abbf4e30e8f0ad668921bb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
496b08784a
commit
13c715c1a6
@ -719,13 +719,18 @@ void WindowCreationData::fromWindow(const QWindow *w, const Qt::WindowFlags flag
|
||||
style |= WS_SYSMENU | WS_BORDER; // QTBUG-2027, dialogs without system menu.
|
||||
exStyle |= WS_EX_DLGMODALFRAME;
|
||||
}
|
||||
if (flags & Qt::WindowMinimizeButtonHint)
|
||||
const bool showMinimizeButton = flags & Qt::WindowMinimizeButtonHint;
|
||||
if (showMinimizeButton)
|
||||
style |= WS_MINIMIZEBOX;
|
||||
if (shouldShowMaximizeButton(w, flags))
|
||||
const bool showMaximizeButton = shouldShowMaximizeButton(w, flags);
|
||||
if (showMaximizeButton)
|
||||
style |= WS_MAXIMIZEBOX;
|
||||
if (showMinimizeButton || showMaximizeButton)
|
||||
style |= WS_SYSMENU;
|
||||
if (tool)
|
||||
exStyle |= WS_EX_TOOLWINDOW;
|
||||
if (flags & Qt::WindowContextHelpButtonHint)
|
||||
if ((flags & Qt::WindowContextHelpButtonHint) && !showMinimizeButton
|
||||
&& !showMaximizeButton)
|
||||
exStyle |= WS_EX_CONTEXTHELP;
|
||||
} else {
|
||||
exStyle |= WS_EX_TOOLWINDOW;
|
||||
|
Loading…
x
Reference in New Issue
Block a user