summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/subsurface-qt/DiveListNotifier.h6
-rw-r--r--desktop-widgets/command_base.cpp2
-rw-r--r--desktop-widgets/tab-widgets/maintab.cpp5
3 files changed, 11 insertions, 2 deletions
diff --git a/core/subsurface-qt/DiveListNotifier.h b/core/subsurface-qt/DiveListNotifier.h
index 95a67a1e8..06cd3f89e 100644
--- a/core/subsurface-qt/DiveListNotifier.h
+++ b/core/subsurface-qt/DiveListNotifier.h
@@ -81,6 +81,12 @@ signals:
void diveSiteDiveCountChanged(dive_site *ds);
void diveSiteChanged(dive_site *ds, int field); // field according to LocationInformationModel
void diveSiteDivesChanged(dive_site *ds); // The dives associated with that site changed
+
+ // This signal is emited every time a command is executed.
+ // This is used to hide an old multi-dives-edited warning message.
+ // This is necessary, so that the user can't click on the "undo" button and undo
+ // an unrelated command.
+ void commandExecuted();
public:
// Desktop uses the QTreeView class to present the list of dives. The layout
// of this class gives us a very fundamental problem, as we can not easily
diff --git a/desktop-widgets/command_base.cpp b/desktop-widgets/command_base.cpp
index 9316135dd..bef9da09c 100644
--- a/desktop-widgets/command_base.cpp
+++ b/desktop-widgets/command_base.cpp
@@ -2,6 +2,7 @@
#include "command_base.h"
#include "core/qthelper.h" // for updateWindowTitle()
+#include "core/subsurface-qt/DiveListNotifier.h"
namespace Command {
@@ -42,6 +43,7 @@ bool execute(Base *cmd)
{
if (cmd->workToBeDone()) {
undoStack.push(cmd);
+ emit diveListNotifier.commandExecuted();
return true;
} else {
delete cmd;
diff --git a/desktop-widgets/tab-widgets/maintab.cpp b/desktop-widgets/tab-widgets/maintab.cpp
index 810d4574c..407436b17 100644
--- a/desktop-widgets/tab-widgets/maintab.cpp
+++ b/desktop-widgets/tab-widgets/maintab.cpp
@@ -80,6 +80,7 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
connect(&diveListNotifier, &DiveListNotifier::divesChanged, this, &MainTab::divesChanged);
connect(&diveListNotifier, &DiveListNotifier::tripChanged, this, &MainTab::tripChanged);
connect(&diveListNotifier, &DiveListNotifier::diveSiteChanged, this, &MainTab::diveSiteEdited);
+ connect(&diveListNotifier, &DiveListNotifier::commandExecuted, this, &MainTab::closeWarning);
connect(ui.editDiveSiteButton, &QToolButton::clicked, MainWindow::instance(), &MainWindow::startDiveSiteEdit);
connect(ui.location, &DiveLocationLineEdit::entered, MapWidget::instance(), &MapWidget::centerOnIndex);
@@ -200,7 +201,7 @@ void MainTab::closeMessage()
void MainTab::closeWarning()
{
- ui.multiDiveWarningMessage->animatedHide();
+ ui.multiDiveWarningMessage->hide();
}
void MainTab::displayMessage(QString str)
@@ -723,7 +724,7 @@ void MainTab::divesEdited(int i)
return;
ui.multiDiveWarningMessage->setCloseButtonVisible(false);
ui.multiDiveWarningMessage->setText(tr("Warning: edited %1 dives").arg(i));
- ui.multiDiveWarningMessage->animatedShow();
+ ui.multiDiveWarningMessage->show();
}
static QStringList stringToList(const QString &s)