1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-06 14:53:21 +02:00

Properly save/restore window geometry

Fixes #328
This commit is contained in:
Martin Tůma 2021-02-19 19:31:54 +01:00
parent 8cb56d3783
commit c6fb231186
3 changed files with 16 additions and 18 deletions

View File

@ -1380,7 +1380,7 @@ void GUI::showToolbars(bool show)
if (show) { if (show) {
Q_ASSERT(!_windowStates.isEmpty()); Q_ASSERT(!_windowStates.isEmpty());
restoreState(_windowStates.last()); restoreState(_windowStates.last());
_windowStates.pop_back(); _windowStates.removeLast();
} else { } else {
_windowStates.append(saveState()); _windowStates.append(saveState());
removeToolBar(_fileToolBar); removeToolBar(_fileToolBar);
@ -1392,6 +1392,7 @@ void GUI::showToolbars(bool show)
void GUI::showFullscreen(bool show) void GUI::showFullscreen(bool show)
{ {
if (show) { if (show) {
_windowGeometries.append(saveGeometry());
_frameStyle = _mapView->frameStyle(); _frameStyle = _mapView->frameStyle();
statusBar()->hide(); statusBar()->hide();
menuBar()->hide(); menuBar()->hide();
@ -1399,6 +1400,8 @@ void GUI::showFullscreen(bool show)
_mapView->setFrameStyle(QFrame::NoFrame); _mapView->setFrameStyle(QFrame::NoFrame);
showFullScreen(); showFullScreen();
} else { } else {
Q_ASSERT(!_windowGeometries.isEmpty());
_windowGeometries.removeLast();
statusBar()->show(); statusBar()->show();
menuBar()->show(); menuBar()->show();
showToolbars(true); showToolbars(true);
@ -1957,14 +1960,13 @@ void GUI::writeSettings()
settings.clear(); settings.clear();
settings.beginGroup(WINDOW_SETTINGS_GROUP); settings.beginGroup(WINDOW_SETTINGS_GROUP);
if (size() != WINDOW_SIZE_DEFAULT) if (!_windowStates.isEmpty() && !_windowGeometries.isEmpty()) {
settings.setValue(WINDOW_SIZE_SETTING, size());
if (pos() != WINDOW_POS_DEFAULT)
settings.setValue(WINDOW_POS_SETTING, pos());
if (_windowStates.isEmpty())
settings.setValue(WINDOW_STATE_SETTING, saveState());
else
settings.setValue(WINDOW_STATE_SETTING, _windowStates.first()); settings.setValue(WINDOW_STATE_SETTING, _windowStates.first());
settings.setValue(WINDOW_GEOMETRY_SETTING, _windowGeometries.first());
} else {
settings.setValue(WINDOW_STATE_SETTING, saveState());
settings.setValue(WINDOW_GEOMETRY_SETTING, saveGeometry());
}
settings.endGroup(); settings.endGroup();
settings.beginGroup(SETTINGS_SETTINGS_GROUP); settings.beginGroup(SETTINGS_SETTINGS_GROUP);
@ -2212,14 +2214,12 @@ void GUI::readSettings()
QSettings settings(qApp->applicationName(), qApp->applicationName()); QSettings settings(qApp->applicationName(), qApp->applicationName());
settings.beginGroup(WINDOW_SETTINGS_GROUP); settings.beginGroup(WINDOW_SETTINGS_GROUP);
resize(settings.value(WINDOW_SIZE_SETTING, WINDOW_SIZE_DEFAULT).toSize()); restoreGeometry(settings.value(WINDOW_GEOMETRY_SETTING).toByteArray());
move(settings.value(WINDOW_POS_SETTING, WINDOW_POS_DEFAULT).toPoint());
restoreState(settings.value(WINDOW_STATE_SETTING).toByteArray()); restoreState(settings.value(WINDOW_STATE_SETTING).toByteArray());
settings.endGroup(); settings.endGroup();
settings.beginGroup(SETTINGS_SETTINGS_GROUP); settings.beginGroup(SETTINGS_SETTINGS_GROUP);
if (settings.value(TIME_TYPE_SETTING, TIME_TYPE_DEFAULT).toInt() if (settings.value(TIME_TYPE_SETTING, TIME_TYPE_DEFAULT).toInt() == Moving)
== Moving)
_movingTimeAction->trigger(); _movingTimeAction->trigger();
else else
_totalTimeAction->trigger(); _totalTimeAction->trigger();
@ -2394,8 +2394,8 @@ void GUI::readSettings()
.toInt(); .toInt();
int mri = settings.value(PNG_MARGIN_RIGHT_SETTING, PNG_MARGIN_RIGHT_DEFAULT) int mri = settings.value(PNG_MARGIN_RIGHT_SETTING, PNG_MARGIN_RIGHT_DEFAULT)
.toInt(); .toInt();
int mbi = settings.value(PNG_MARGIN_BOTTOM_SETTING, PNG_MARGIN_BOTTOM_DEFAULT) int mbi = settings.value(PNG_MARGIN_BOTTOM_SETTING,
.toInt(); PNG_MARGIN_BOTTOM_DEFAULT).toInt();
_pngExport.margins = QMargins(mli, mti, mri, mbi); _pngExport.margins = QMargins(mli, mti, mri, mbi);
_pngExport.antialiasing = settings.value(PNG_ANTIALIASING_SETTING, _pngExport.antialiasing = settings.value(PNG_ANTIALIASING_SETTING,
PNG_ANTIALIASING_DEFAULT).toBool(); PNG_ANTIALIASING_DEFAULT).toBool();

View File

@ -242,6 +242,7 @@ private:
GraphTab *_lastGraphTab; GraphTab *_lastGraphTab;
QList<QByteArray> _windowStates; QList<QByteArray> _windowStates;
QList<QByteArray> _windowGeometries;
int _frameStyle; int _frameStyle;
PDFExport _pdfExport; PDFExport _pdfExport;

View File

@ -5,10 +5,7 @@
(QLocale::system().measurementSystem() == QLocale::ImperialSystem) (QLocale::system().measurementSystem() == QLocale::ImperialSystem)
#define WINDOW_SETTINGS_GROUP "Window" #define WINDOW_SETTINGS_GROUP "Window"
#define WINDOW_SIZE_SETTING "size" #define WINDOW_GEOMETRY_SETTING "geometry"
#define WINDOW_SIZE_DEFAULT QSize(600, 800)
#define WINDOW_POS_SETTING "pos"
#define WINDOW_POS_DEFAULT QPoint(10, 10)
#define WINDOW_STATE_SETTING "state" #define WINDOW_STATE_SETTING "state"
#define SETTINGS_SETTINGS_GROUP "Settings" #define SETTINGS_SETTINGS_GROUP "Settings"