Fix centering dialogs
QDialog::setVisible() tries to adjusts the dialog position, but it's not really possible if the dialog size is not defined yet. Besides, if the dialog window is not created, QWidget::move() will not really move it and will set WA_PendingMoveEvent flag. And QWidget::setVisible() also will not change the position, because we reset WA_Moved flag. Thus it may break adjusting the position in QDialog::showEvent(). So adjust the position only in QDialog::showEvent(). Task-number: QTBUG-36185 Task-number: QTBUG-39259 Task-number: QTBUG-41844 Change-Id: I015a19f2e533f68178f4ee7519b17f5e9b5def7b Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
This commit is contained in:
parent
2d8c7087fb
commit
6468cf4e79
@ -720,13 +720,6 @@ void QDialog::setVisible(bool visible)
|
||||
if (testAttribute(Qt::WA_WState_ExplicitShowHide) && !testAttribute(Qt::WA_WState_Hidden))
|
||||
return;
|
||||
|
||||
if (!testAttribute(Qt::WA_Moved)) {
|
||||
Qt::WindowStates state = windowState();
|
||||
adjustPosition(parentWidget());
|
||||
setAttribute(Qt::WA_Moved, false); // not really an explicit position
|
||||
if (state != windowState())
|
||||
setWindowState(state);
|
||||
}
|
||||
QWidget::setVisible(visible);
|
||||
showExtension(d->doShowExtension);
|
||||
QWidget *fw = window()->focusWidget();
|
||||
|
Loading…
Reference in New Issue
Block a user