Fix "normal geometry" not being restored

When restoring a maximized window, calling QWidget::showNormal()
on it wouldn't set it's previous non-maximized size.

QWidget::normalGeometry() doesn't have a setter, so use private API.
This commit is contained in:
Sergio Martins
2021-09-04 19:43:45 +01:00
parent 3574feea98
commit fafc0b7946
5 changed files with 33 additions and 1 deletions

View File

@@ -27,6 +27,8 @@
#include <QMouseEvent>
#include <QWindow>
#include <QtWidgets/private/qwidget_p.h>
using namespace KDDockWidgets;
QWidgetAdapter::QWidgetAdapter(QWidget *parent, Qt::WindowFlags f)
@@ -129,4 +131,18 @@ QWidget *KDDockWidgets::Private::widgetForWindow(QWindow *window)
return window->property("kddockwidgets_qwidget").value<QWidget *>();
}
void QWidgetAdapter::setNormalGeometry(QRect geo)
{
if (isNormalWindowState(windowState())) {
setGeometry(geo);
} else {
QWidgetPrivate *priv = QWidgetPrivate::get(this);
if (priv->extra && priv->extra->topextra) {
priv->topData()->normalGeometry = geo;
} else {
qWarning() << Q_FUNC_INFO << "Failing to set normal geometry";
}
}
}
LayoutGuestWidget::~LayoutGuestWidget() = default;