Skip to content

Commit

Permalink
Fix some dialogs never remember geometry when using enableAutoGeometr…
Browse files Browse the repository at this point in the history
…yRestore

If a dialog is created but never shown, we shouldn't save the geometry
or we'll be saving a default state only
  • Loading branch information
nyalldawson committed Jul 23, 2019
1 parent 0afcc99 commit a107eed
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions src/gui/qgswidgetstatehelper_p.cpp
Expand Up @@ -17,6 +17,7 @@
#include <QWidget>
#include <QEvent>
#include <QObject>
#include <QVariant>
#include "qgsguiutils.h"
#include "qgslogger.h"

Expand All @@ -30,16 +31,22 @@ bool QgsWidgetStateHelper::eventFilter( QObject *object, QEvent *event )
if ( event->type() == QEvent::Close || event->type() == QEvent::Destroy )
{
QWidget *widget = qobject_cast<QWidget *>( object );
QString name = widgetSafeName( widget );
QString key = mKeys[name];
QgsGuiUtils::saveGeometry( widget, key );

// don't save geometry for windows which were never shown
if ( widget->property( "widgetStateHelperWasShown" ).toBool() )
{
QString name = widgetSafeName( widget );
QString key = mKeys[name];
QgsGuiUtils::saveGeometry( widget, key );
}
}
else if ( event->type() == QEvent::Show )
{
QWidget *widget = qobject_cast<QWidget *>( object );
QString name = widgetSafeName( widget );
QString key = mKeys[name];
QgsGuiUtils::restoreGeometry( widget, key );
widget->setProperty( "widgetStateHelperWasShown", QVariant( true ) );
}
return QObject::eventFilter( object, event );
}
Expand Down

0 comments on commit a107eed

Please sign in to comment.