diff options
Diffstat (limited to 'src/widgets/kernel/qwidget.cpp')
| -rw-r--r-- | src/widgets/kernel/qwidget.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index f9151f6147a..f644cb53eca 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -7954,21 +7954,29 @@ void QWidget::setUpdatesEnabled(bool enable) /*! Shows the widget and its child widgets. - This is equivalent to calling showFullScreen(), showMaximized(), or setVisible(true), - depending on the platform's default behavior for the window flags. + For child windows, this is equivalent to calling setVisible(true). + Otherwise, it is equivalent to calling showFullScreen(), showMaximized(), + or setVisible(true), depending on the platform's default behavior for the window flags. - \sa raise(), showEvent(), hide(), setVisible(), showMinimized(), showMaximized(), + \sa raise(), showEvent(), hide(), setVisible(), showMinimized(), showMaximized(), showNormal(), isVisible(), windowFlags() */ void QWidget::show() { - Qt::WindowState defaultState = QGuiApplicationPrivate::platformIntegration()->defaultWindowState(data->window_flags); - if (defaultState == Qt::WindowFullScreen) - showFullScreen(); - else if (defaultState == Qt::WindowMaximized) - showMaximized(); - else - setVisible(true); // Don't call showNormal() as not to clobber Qt::Window(Max/Min)imized + // Note: We don't call showNormal() as not to clobber Qt::Window(Max/Min)imized + + if (!isWindow()) { + setVisible(true); + } else { + const auto *platformIntegration = QGuiApplicationPrivate::platformIntegration(); + Qt::WindowState defaultState = platformIntegration->defaultWindowState(data->window_flags); + if (defaultState == Qt::WindowFullScreen) + showFullScreen(); + else if (defaultState == Qt::WindowMaximized) + showMaximized(); + else + setVisible(true); + } } /*! \internal |
