diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-10-28 06:57:54 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-10-28 04:40:26 -0700 |
commit | 81ea47a498b04e5f057e9d009fb73d9d559b37b5 (patch) | |
tree | d82c58d58628dde430414d4584676d66b69e7e2e /desktop-widgets/locationinformation.cpp | |
parent | a9b1fbdcc5aba16cb5b5d3acdbbe2b4e48768e1c (diff) | |
download | subsurface-81ea47a498b04e5f057e9d009fb73d9d559b37b5.tar.gz |
Desktop: fix dive site editing
When clicking "done" on the dive site edit screen, the diveSite
member variable was reset to nullptr in acceptChanges() at the
beginning of the function. This prevented posting an undo-command
as a consequence of the active widget losing focus.
Reset the diveSite variable after exiting dive-site mode, which
causes the active widget to lose focus.
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/locationinformation.cpp')
-rw-r--r-- | desktop-widgets/locationinformation.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/desktop-widgets/locationinformation.cpp b/desktop-widgets/locationinformation.cpp index 3a0d2f442..4f1241d82 100644 --- a/desktop-widgets/locationinformation.cpp +++ b/desktop-widgets/locationinformation.cpp @@ -189,13 +189,19 @@ void LocationInformationWidget::diveSiteDeleted(struct dive_site *ds, int) void LocationInformationWidget::acceptChanges() { - diveSite = nullptr; closeDistance = 0; MainWindow::instance()->diveList->setEnabled(true); MainWindow::instance()->setEnabledToolbar(true); MainWindow::instance()->setApplicationState(ApplicationState::Default); MultiFilterSortModel::instance()->stopFilterDiveSites(); + + // Subtlety alert: diveSite must be cleared *after* exiting the dive-site mode. + // Exiting dive-site mode removes the focus from the active widget and + // thus fires the corresponding editingFinished signal, which in turn creates + // an undo-command. To set an undo-command, the widget has to know the + // currently edited dive-site. + diveSite = nullptr; } void LocationInformationWidget::initFields(dive_site *ds) |