[PATCH] Make sure we do not fall back to edit mode on accept

Miika Turkia miika.turkia at gmail.com
Sun Jan 4 10:06:33 PST 2015


On Ubuntu 14.04 the edit mode does not exit successfully when applying
the changes. It instead jumps back to edit mode (even though hiding the
option to apply/discard changes again). So let's just have a flag to
prevent faulty behavior.

Signed-off-by: Miika Turkia <miika.turkia at gmail.com>
---
 qt-ui/maintab.cpp | 29 ++++++++++++++++++-----------
 qt-ui/maintab.h   |  1 +
 2 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index c582313..2906081 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -701,6 +701,8 @@ void MainTab::acceptChanges()
 	int i, addedId = -1;
 	struct dive *d;
 	bool do_replot = false;
+
+	acceptingEdit = true;
 	tabBar()->setTabIcon(0, QIcon()); // Notes
 	tabBar()->setTabIcon(1, QIcon()); // Equipment
 	ui.dateEdit->setEnabled(true);
@@ -870,6 +872,7 @@ void MainTab::acceptChanges()
 	cylindersModel->changed = false;
 	weightModel->changed = false;
 	MainWindow::instance()->setEnabledToolbar(true);
+	acceptingEdit = false;
 }
 
 void MainTab::resetPallete()
@@ -960,7 +963,7 @@ void MainTab::markChangedWidget(QWidget *w)
 
 void MainTab::on_buddy_textChanged()
 {
-	if (editMode == IGNORE)
+	if (editMode == IGNORE || acceptingEdit == true)
 		return;
 	QStringList text_list = ui.buddy->toPlainText().split(",", QString::SkipEmptyParts);
 	for (int i = 0; i < text_list.size(); i++)
@@ -973,7 +976,7 @@ void MainTab::on_buddy_textChanged()
 
 void MainTab::on_divemaster_textChanged()
 {
-	if (editMode == IGNORE)
+	if (editMode == IGNORE || acceptingEdit == true)
 		return;
 	QStringList text_list = ui.divemaster->toPlainText().split(",", QString::SkipEmptyParts);
 	for (int i = 0; i < text_list.size(); i++)
@@ -986,7 +989,7 @@ void MainTab::on_divemaster_textChanged()
 
 void MainTab::on_airtemp_textChanged(const QString &text)
 {
-	if (editMode == IGNORE)
+	if (editMode == IGNORE || acceptingEdit == true)
 		return;
 	displayed_dive.airtemp.mkelvin = parseTemperatureToMkelvin(text);
 	markChangedWidget(ui.airtemp);
@@ -995,7 +998,7 @@ void MainTab::on_airtemp_textChanged(const QString &text)
 
 void MainTab::on_watertemp_textChanged(const QString &text)
 {
-	if (editMode == IGNORE)
+	if (editMode == IGNORE || acceptingEdit == true)
 		return;
 	displayed_dive.watertemp.mkelvin = parseTemperatureToMkelvin(text);
 	markChangedWidget(ui.watertemp);
@@ -1032,7 +1035,7 @@ void MainTab::validate_temp_field(QLineEdit *tempField, const QString &text)
 
 void MainTab::on_dateEdit_dateChanged(const QDate &date)
 {
-	if (editMode == IGNORE)
+	if (editMode == IGNORE || acceptingEdit == true)
 		return;
 	markChangedWidget(ui.dateEdit);
 	QDateTime dateTime = QDateTime::fromTime_t(displayed_dive.when - gettimezoneoffset(displayed_dive.when));
@@ -1044,7 +1047,7 @@ void MainTab::on_dateEdit_dateChanged(const QDate &date)
 
 void MainTab::on_timeEdit_timeChanged(const QTime &time)
 {
-	if (editMode == IGNORE)
+	if (editMode == IGNORE || acceptingEdit == true)
 		return;
 	markChangedWidget(ui.timeEdit);
 	QDateTime dateTime = QDateTime::fromTime_t(displayed_dive.when - gettimezoneoffset(displayed_dive.when));
@@ -1074,14 +1077,14 @@ void MainTab::saveTags()
 
 void MainTab::on_tagWidget_textChanged()
 {
-	if (editMode == IGNORE)
+	if (editMode == IGNORE || acceptingEdit == true)
 		return;
 	markChangedWidget(ui.tagWidget);
 }
 
 void MainTab::on_location_textChanged(const QString &text)
 {
-	if (editMode == IGNORE)
+	if (editMode == IGNORE || acceptingEdit == true)
 		return;
 	if (currentTrip) {
 		free(displayedTrip.location);
@@ -1119,7 +1122,7 @@ void MainTab::on_location_editingFinished()
 
 void MainTab::on_suit_textChanged(const QString &text)
 {
-	if (editMode == IGNORE)
+	if (editMode == IGNORE || acceptingEdit == true)
 		return;
 	free(displayed_dive.suit);
 	displayed_dive.suit = strdup(text.toUtf8().data());
@@ -1128,7 +1131,7 @@ void MainTab::on_suit_textChanged(const QString &text)
 
 void MainTab::on_notes_textChanged()
 {
-	if (editMode == IGNORE)
+	if (editMode == IGNORE || acceptingEdit == true)
 		return;
 	if (currentTrip) {
 		free(displayedTrip.notes);
@@ -1145,7 +1148,7 @@ void MainTab::on_notes_textChanged()
 
 void MainTab::on_coordinates_textChanged(const QString &text)
 {
-	if (editMode == IGNORE)
+	if (editMode == IGNORE || acceptingEdit == true)
 		return;
 	bool gpsChanged = false;
 	bool parsed = false;
@@ -1162,6 +1165,8 @@ void MainTab::on_coordinates_textChanged(const QString &text)
 
 void MainTab::on_rating_valueChanged(int value)
 {
+	if (acceptingEdit == true)
+		return;
 	if (displayed_dive.rating != value) {
 		displayed_dive.rating = value;
 		modified = true;
@@ -1171,6 +1176,8 @@ void MainTab::on_rating_valueChanged(int value)
 
 void MainTab::on_visibility_valueChanged(int value)
 {
+	if (acceptingEdit == true)
+		return;
 	if (displayed_dive.visibility != value) {
 		displayed_dive.visibility = value;
 		modified = true;
diff --git a/qt-ui/maintab.h b/qt-ui/maintab.h
index 369dd17..668ed02 100644
--- a/qt-ui/maintab.h
+++ b/qt-ui/maintab.h
@@ -112,6 +112,7 @@ private:
 	void markChangedWidget(QWidget *w);
 	dive_trip_t *currentTrip;
 	dive_trip_t displayedTrip;
+	bool acceptingEdit;
 };
 
 #endif // MAINTAB_H
-- 
1.9.1



More information about the subsurface mailing list