aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2021-04-09 21:51:42 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-04-10 14:15:35 -0700
commit4daf6878768fabb2db15fae4e202aacc47676dee (patch)
tree9921ac704c9275d24a74c932be69733ed8ad56a0
parent11c54b85f6f6c567e5a9f6e6e537eace49ee6666 (diff)
downloadsubsurface-4daf687876.tar.gz
profile: remove [disable|enable]Shortcuts() signals
When switching to the "plan" or "add" (which should rather be called "edit", by the way) mode of the profile, the "shortcuts" for copy&paste, undo&redo, etc. are disabled. When switching to "profile" mode, they are reenabled. This was done in a most convoluted way: - The MainWindow calls the set*State() function of the profile. - The Profile emits [disable|enable]Shortcuts() signals. - The MainWindow catches these signals and does the enabling or disabling. Not only is this very hard to reason about, it is also in contradiction to the profile being part of the display layer. Moreover, in editCurrentDive() the MainWindow disabled the shortcuts itself, so this was all redundant. For the sake of sanity, let's just move this logic to the MainWindow, unslotify the [disable|enable]Shortcuts() functions and make them private. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--desktop-widgets/mainwindow.cpp6
-rw-r--r--desktop-widgets/mainwindow.h4
-rw-r--r--profile-widget/profilewidget2.cpp4
-rw-r--r--profile-widget/profilewidget2.h2
4 files changed, 5 insertions, 11 deletions
diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp
index 8126acf10..f01d3ea48 100644
--- a/desktop-widgets/mainwindow.cpp
+++ b/desktop-widgets/mainwindow.cpp
@@ -297,8 +297,6 @@ MainWindow::MainWindow() : QMainWindow(),
// now let's set up some connections
connect(graphics, &ProfileWidget2::enableToolbar ,this, &MainWindow::setEnabledToolbar);
- connect(graphics, &ProfileWidget2::disableShortcuts, this, &MainWindow::disableShortcuts);
- connect(graphics, &ProfileWidget2::enableShortcuts, this, &MainWindow::enableShortcuts);
connect(graphics, &ProfileWidget2::editCurrentDive, this, &MainWindow::editCurrentDive);
connect(&diveListNotifier, &DiveListNotifier::settingsChanged, graphics, &ProfileWidget2::settingsChanged);
@@ -771,6 +769,7 @@ void MainWindow::on_actionReplanDive_triggered()
// put us in PLAN mode
setApplicationState(ApplicationState::PlanDive);
+ disableShortcuts(true);
graphics->setPlanState(&displayed_dive, 0);
plannerWidgets->replanDive();
}
@@ -783,6 +782,7 @@ void MainWindow::on_actionDivePlanner_triggered()
// put us in PLAN mode
setApplicationState(ApplicationState::PlanDive);
+ disableShortcuts(true);
graphics->setPlanState(&displayed_dive, 0);
plannerWidgets->planDive();
}
@@ -1515,7 +1515,7 @@ void MainWindow::editCurrentDive()
if (mainTab->isEditing() || DivePlannerPointsModel::instance()->currentMode() != DivePlannerPointsModel::NOTHING)
return;
- disableShortcuts();
+ disableShortcuts(false);
copy_dive(current_dive, &displayed_dive); // Work on a copy of the dive
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::ADD);
DivePlannerPointsModel::instance()->loadFromDive(&displayed_dive);
diff --git a/desktop-widgets/mainwindow.h b/desktop-widgets/mainwindow.h
index 4b28c0a9e..18fc5c577 100644
--- a/desktop-widgets/mainwindow.h
+++ b/desktop-widgets/mainwindow.h
@@ -164,8 +164,6 @@ slots:
void setEnabledToolbar(bool arg1);
// Some shortcuts like "change DC" or "copy/paste dive components"
// should only be enabled when the profile's visible.
- void disableShortcuts(bool disablePaste = true);
- void enableShortcuts();
void startDiveSiteEdit();
private:
@@ -237,6 +235,8 @@ private:
void setQuadrantWidget(QSplitter &splitter, const Quadrant &q, int pos);
void setQuadrantWidgets(QSplitter &splitter, const Quadrant &left, const Quadrant &right);
void registerApplicationState(ApplicationState state, Quadrants q);
+ void disableShortcuts(bool disablePaste = true);
+ void enableShortcuts();
QMenu *connections;
QAction *share_on_fb;
diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp
index ea09ad040..8e71c391a 100644
--- a/profile-widget/profilewidget2.cpp
+++ b/profile-widget/profilewidget2.cpp
@@ -1127,8 +1127,6 @@ void ProfileWidget2::setProfileState()
disconnectTemporaryConnections();
/* show the same stuff that the profile shows. */
- emit enableShortcuts();
-
currentState = PROFILE;
emit enableToolbar(true);
setBackgroundBrush(getColor(::BACKGROUND, isGrayscale));
@@ -1279,7 +1277,6 @@ void ProfileWidget2::setAddState(const dive *d, int dc)
mouseFollowerHorizontal->setLine(timeAxis->line());
mouseFollowerVertical->setLine(QLineF(0, profileYAxis->pos().y(), 0, timeAxis->pos().y()));
disconnectTemporaryConnections();
- emit disableShortcuts(false);
actionsForKeys[Qt::Key_Left]->setShortcut(Qt::Key_Left);
actionsForKeys[Qt::Key_Right]->setShortcut(Qt::Key_Right);
actionsForKeys[Qt::Key_Up]->setShortcut(Qt::Key_Up);
@@ -1310,7 +1307,6 @@ void ProfileWidget2::setPlanState(const dive *d, int dc)
mouseFollowerHorizontal->setLine(timeAxis->line());
mouseFollowerVertical->setLine(QLineF(0, profileYAxis->pos().y(), 0, timeAxis->pos().y()));
disconnectTemporaryConnections();
- emit disableShortcuts(true);
actionsForKeys[Qt::Key_Left]->setShortcut(Qt::Key_Left);
actionsForKeys[Qt::Key_Right]->setShortcut(Qt::Key_Right);
actionsForKeys[Qt::Key_Up]->setShortcut(Qt::Key_Up);
diff --git a/profile-widget/profilewidget2.h b/profile-widget/profilewidget2.h
index 44567dbd8..c45bbc611 100644
--- a/profile-widget/profilewidget2.h
+++ b/profile-widget/profilewidget2.h
@@ -100,8 +100,6 @@ public:
signals:
void fontPrintScaleChanged(double scale);
void enableToolbar(bool enable);
- void enableShortcuts();
- void disableShortcuts(bool paste);
void editCurrentDive();
public