summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-07-30 11:15:08 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-10-11 16:22:27 -0700
commit26901a8dbd91a18689199361541f9d1f90d56e4e (patch)
tree846acb461aaf30edf2ea68c0d357cd269ea643ba
parent63b65a7e20615d7e049ab09ae7dc6053d705c04b (diff)
downloadsubsurface-26901a8dbd91a18689199361541f9d1f90d56e4e.tar.gz
Undo: disable undo- and redo-actions in edit mode
We have to avoid that undo/redo removes the currently edited dive from under our feet. This code can be removed once proper undo/redo (including editing) is implemented. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--desktop-widgets/mainwindow.cpp13
-rw-r--r--desktop-widgets/mainwindow.h2
2 files changed, 9 insertions, 6 deletions
diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp
index 05839824a..376d2e7f3 100644
--- a/desktop-widgets/mainwindow.cpp
+++ b/desktop-widgets/mainwindow.cpp
@@ -260,14 +260,11 @@ MainWindow::MainWindow() : QMainWindow(),
memset(&what, 0, sizeof(what));
updateManager = new UpdateManager(this);
- QAction *undoAction = Command::undoAction(this);
- QAction *redoAction = Command::redoAction(this);
+ undoAction = Command::undoAction(this);
+ redoAction = Command::redoAction(this);
undoAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Z));
redoAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Z));
- QList<QAction*>undoRedoActions;
- undoRedoActions.append(undoAction);
- undoRedoActions.append(redoAction);
- ui.menu_Edit->addActions(undoRedoActions);
+ ui.menu_Edit->addActions({ undoAction, redoAction });
ReverseGeoLookupThread *geoLookup = ReverseGeoLookupThread::instance();
connect(geoLookup, SIGNAL(started()),information(), SLOT(disableGeoLookupEdition()));
@@ -1184,6 +1181,8 @@ void MainWindow::on_actionViewAll_triggered()
void MainWindow::enterEditState()
{
+ undoAction->setEnabled(false);
+ redoAction->setEnabled(false);
stateBeforeEdit = state;
if (state == VIEWALL || state == INFO_MAXIMIZED)
return;
@@ -1207,6 +1206,8 @@ void MainWindow::enterEditState()
void MainWindow::exitEditState()
{
+ undoAction->setEnabled(true);
+ redoAction->setEnabled(true);
if (stateBeforeEdit == state)
return;
enterState(stateBeforeEdit);
diff --git a/desktop-widgets/mainwindow.h b/desktop-widgets/mainwindow.h
index 113f0699c..2f2b91a83 100644
--- a/desktop-widgets/mainwindow.h
+++ b/desktop-widgets/mainwindow.h
@@ -185,6 +185,8 @@ private:
Ui::MainWindow ui;
QAction *actionNextDive;
QAction *actionPreviousDive;
+ QAction *undoAction;
+ QAction *redoAction;
#ifndef NO_USERMANUAL
UserManual *helpView;
#endif