From a47df05ce5a94034fd4b5bdd83c8f425e64a5946 Mon Sep 17 00:00:00 2001 From: Jan Mulder Date: Wed, 10 Oct 2018 14:07:47 +0200 Subject: Edit: prevent not needed change marking While trying to understand more of the big change from PR 1528, I found that the divelist was marked changed while it was not changed at all. Reason is simple. The MODIFY_DIVES code assumes its called only for truly changed data. But in case of saving tagged strings, it was not. This fixes this. And I do not believe this has any visual effects. Further, the now broken indentation is fixed seperately. Signed-off-by: Jan Mulder --- desktop-widgets/tab-widgets/maintab.cpp | 7 ++++--- desktop-widgets/tab-widgets/maintab.h | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'desktop-widgets/tab-widgets') diff --git a/desktop-widgets/tab-widgets/maintab.cpp b/desktop-widgets/tab-widgets/maintab.cpp index 053f4e043..dc794ef4f 100644 --- a/desktop-widgets/tab-widgets/maintab.cpp +++ b/desktop-widgets/tab-widgets/maintab.cpp @@ -1279,7 +1279,7 @@ void MainTab::saveTaggedStrings(const QVector &selectedDives) QStringList addedList, removedList; struct dive *cd = current_dive; - diffTaggedStrings(cd->buddy, displayed_dive.buddy, addedList, removedList); + if (diffTaggedStrings(cd->buddy, displayed_dive.buddy, addedList, removedList)) MODIFY_DIVES(selectedDives, QStringList oldList = QString(mydive->buddy).split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); QString newString; @@ -1301,7 +1301,7 @@ void MainTab::saveTaggedStrings(const QVector &selectedDives) ); addedList.clear(); removedList.clear(); - diffTaggedStrings(cd->divemaster, displayed_dive.divemaster, addedList, removedList); + if (diffTaggedStrings(cd->divemaster, displayed_dive.divemaster, addedList, removedList)) MODIFY_DIVES(selectedDives, QStringList oldList = QString(mydive->divemaster).split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); QString newString; @@ -1323,7 +1323,7 @@ void MainTab::saveTaggedStrings(const QVector &selectedDives) ); } -void MainTab::diffTaggedStrings(QString currentString, QString displayedString, QStringList &addedList, QStringList &removedList) +int MainTab::diffTaggedStrings(QString currentString, QString displayedString, QStringList &addedList, QStringList &removedList) { QStringList displayedList, currentList; currentList = currentString.split(',', QString::SkipEmptyParts); @@ -1336,6 +1336,7 @@ void MainTab::diffTaggedStrings(QString currentString, QString displayedString, if (!currentList.contains(tag, Qt::CaseInsensitive)) addedList << tag.trimmed(); } + return removedList.length() + addedList.length(); } void MainTab::on_tagWidget_textChanged() diff --git a/desktop-widgets/tab-widgets/maintab.h b/desktop-widgets/tab-widgets/maintab.h index c38615c93..d644be4e3 100644 --- a/desktop-widgets/tab-widgets/maintab.h +++ b/desktop-widgets/tab-widgets/maintab.h @@ -119,7 +119,7 @@ private: void copyTagsToDisplayedDive(); void saveTags(const QVector &selectedDives); void saveTaggedStrings(const QVector &selectedDives); - void diffTaggedStrings(QString currentString, QString displayedString, QStringList &addedList, QStringList &removedList); + int diffTaggedStrings(QString currentString, QString displayedString, QStringList &addedList, QStringList &removedList); void markChangedWidget(QWidget *w); dive_trip_t *currentTrip; dive_trip_t displayedTrip; -- cgit v1.2.3-70-g09d2