Don't set WindowContextHelpButtonHint by default for dialogs and sheets

This makes the Qt::AA_DisableWindowContextHelpButton flag obsolete. It
is already documented as such in Qt 5, so we can remove it now.

[ChangeLog][QtWidgets] Do not show 'What's this' button anymore in
dialogs on Windows. To show the button again, you need to set
Qt::WindowsContextHelpButtonHint explicitly the top level widget.

Change-Id: I30017ca300441cb2ee37940ce97dfe18eb2b118b
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
This commit is contained in:
Volker Hilsheimer 2020-04-03 12:59:23 +02:00
parent b75c82f645
commit c9b2528a9d
3 changed files with 5 additions and 18 deletions

View File

@ -528,7 +528,7 @@ namespace Qt {
AA_DisableShaderDiskCache = 27,
AA_DontShowShortcutsInContextMenus = 28,
AA_CompressTabletEvents = 29,
AA_DisableWindowContextHelpButton = 30, // ### Qt 6: remove me
// AA_DisableWindowContextHelpButton = 30,
AA_DisableSessionManager = 31,
// Add new attributes before this line

View File

@ -280,12 +280,6 @@
\e glProgramBinary(). In the unlikely event of this being problematic,
set this attribute to disable all disk-based caching of shaders.
\value AA_DisableWindowContextHelpButton Disables the WindowContextHelpButtonHint
by default on Qt::Sheet and Qt::Dialog widgets. This hides the \gui ? button
on Windows, which only makes sense if you use \l QWhatsThis functionality.
This value was added in Qt 5.10. In Qt 6, WindowContextHelpButtonHint
will not be set by default.
\value AA_DisableSessionManager Disables the QSessionManager.
By default Qt will connect to a running session manager for a GUI
application on supported platforms, use of a session manager may be

View File

@ -967,18 +967,11 @@ void QWidgetPrivate::adjustFlags(Qt::WindowFlags &flags, QWidget *w)
flags |= Qt::WindowSystemMenuHint;
flags |= Qt::WindowTitleHint;
}
if (customize)
; // don't modify window flags if the user explicitly set them.
else if (type == Qt::Dialog || type == Qt::Sheet) {
if (!customize) { // don't modify window flags if the user explicitly set them.
flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint;
// ### fixme: Qt 6: Never set Qt::WindowContextHelpButtonHint flag automatically
if (!QApplicationPrivate::testAttribute(Qt::AA_DisableWindowContextHelpButton))
flags |= Qt::WindowContextHelpButtonHint;
} else if (type == Qt::Tool)
flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint;
else
flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint |
Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint | Qt::WindowFullscreenButtonHint;
if (type != Qt::Dialog && type != Qt::Sheet && type != Qt::Tool)
flags |= Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowFullscreenButtonHint;
}
if (w->testAttribute(Qt::WA_TransparentForMouseEvents))
flags |= Qt::WindowTransparentForInput;
}