Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
5.3.1, 6.6.0
-
None
Description
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index 35a526e..d417e41 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -551,6 +551,13 @@ void QWidgetWindow::updateGeometry() const QMargins margins = frameMargins(); + if (geometry().x() != m_widget->data->crect.x() || + geometry().y() != m_widget->data->crect.y()) + m_widget->setAttribute(Qt::WA_Moved); + if (geometry().width() != m_widget->data->crect.width() || + geometry().height() != m_widget->data->crect.height()) + m_widget->setAttribute(Qt::WA_Resized); + m_widget->data->crect = geometry(); QTLWExtra *te = m_widget->d_func()->topData(); te->posIncludesFrame= false;
The KDEFileDialog platform wrapper runs into this on sync ::exec()ution of the dialog.
The size is restored for the dialogs windowHandle() QWindow, but while the size is applied on the window, it's not on the widget.
I added ::processEvents() after the QWindow::resize() call, but that's not sufficient.
After comparing QWidget::setGeometry() with QWidgetWindow::updateGeometry() I just tried adding those flags =)
Ultimately, this does not seem entirely sufficient to me - altering the QWindow size should always align the backing QWidget size, but i'm not sure whether unconditionally processing events from the QWindow::resize() function would be any reasonable.
See
https://git.reviewboard.kde.org/r/119594/
and
https://git.reviewboard.kde.org/r/119593/
on details.
Attachments
Gerrit Reviews
For Gerrit Dashboard: QTBUG-40584 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
523686,1 | QWindow: send resize event if resize() is called before main eventloop | dev | qt/qtbase | Status: ABANDONED | -1 | 0 |
524050,4 | QWidget: don't override QWindow size when showing the widget | dev | qt/qtbase | Status: ABANDONED | 0 | 0 |