From a0e9a5960688df8432afddd6b73b0a45b8ed0de6 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Wed, 17 Nov 2021 05:22:00 -0800 Subject: [PATCH] do not save IPTC tags in the arp if they are unchanged (cherry picked from commit c4c642794868c2b03fd824acc0a7db962162c16f) --- rtgui/iptcpanel.cc | 21 ++++++++++++++------- rtgui/iptcpanel.h | 1 + 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/rtgui/iptcpanel.cc b/rtgui/iptcpanel.cc index f103433c3..a7aa38f88 100644 --- a/rtgui/iptcpanel.cc +++ b/rtgui/iptcpanel.cc @@ -461,34 +461,41 @@ IPTCPanel::IPTCPanel(): show_all(); } + void IPTCPanel::read (const ProcParams* pp, const ParamsEdited* pedited) { - disableListener(); changeList->clear(); if (!pp->metadata.iptc.empty()) { *changeList = pp->metadata.iptc; + changelist_valid_ = true; } else { *changeList = *embeddedData; + changelist_valid_ = false; } applyChangeList(); enableListener(); } + void IPTCPanel::write (ProcParams* pp, ParamsEdited* pedited) { - - pp->metadata.iptc = *changeList; + if (changelist_valid_) { + pp->metadata.iptc = *changeList; + } else { + pp->metadata.iptc.clear(); + } } + void IPTCPanel::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited) { - *defChangeList = defParams->metadata.iptc; } + void IPTCPanel::setImageData(const FramesMetaData* id) { embeddedData->clear(); @@ -510,9 +517,9 @@ void IPTCPanel::setImageData(const FramesMetaData* id) file->set_sensitive(!embeddedData->empty()); } + void IPTCPanel::notifyListener() { - if (listener) { listener->panelChanged(EvIPTC, M("HISTORY_CHANGED")); } @@ -628,7 +635,7 @@ void IPTCPanel::delSuppCategory() void IPTCPanel::updateChangeList() { - + changelist_valid_ = true; changeList->clear(); (*changeList)[CAPTION].push_back(captionText->get_text()); (*changeList)[CAPTION_WRITER].push_back(captionWriter->get_text()); @@ -756,9 +763,9 @@ void IPTCPanel::applyChangeList() void IPTCPanel::resetClicked() { - disableListener(); *changeList = *defChangeList; + changelist_valid_ = false; applyChangeList(); enableListener(); notifyListener(); diff --git a/rtgui/iptcpanel.h b/rtgui/iptcpanel.h index da52fa7d2..66564a151 100644 --- a/rtgui/iptcpanel.h +++ b/rtgui/iptcpanel.h @@ -34,6 +34,7 @@ private: const std::unique_ptr changeList; const std::unique_ptr defChangeList; const std::unique_ptr embeddedData; + bool changelist_valid_; Gtk::TextView* captionView; Glib::RefPtr captionText;