SUMMARY Changes made to tags in digiKam are not being written to the XPkeywords tag in file metadata. This results in making it impossible to remove tags that were present in XPkeywrds since digiKam will not actually remove them from file metadata. STEPS TO REPRODUCE 1. Software setup: Configure-digiKam->MetaData->Behavior Image Tags and Rating are checked Configure-digiKam->MetaData->Advanced Confirmed that Tags->Write Options->Exif.Image.XPkeywords is checked 2. Edit image properties in Windows Explorer and assign a tag 'TAGWIN' 3. Verify existence of XPkeywords using exiftool $ ~/exiftool.exe -XPkeywords 20150116_212511.jpg XP Keywords : TAGWIN 4. Album->Reread metadata from files. The tag appears in digiKam 5. Select image in digiKam, and using right side-bar uncheck 'TAGWIN' and click Apply. Tag disappears from image in digiKam. 6. Verify tag is removed. 7. Check file using exiftool.exe and see that the 'TAGWIN' is still present. $ ~/exiftool.exe -XPkeywords 20150116_212511.jpg XP Keywords : TAGWIN 8. Album->Write metadata to files (Should not be needed, but do it anyways) 9. Check file using exiftool.exe and see that the 'TAGWIN' is still present. $ ~/exiftool.exe -XPkeywords 20150116_212511.jpg XP Keywords : TAGWIN 10. Album->Reread metadata from files. 'TAGWIN' reappears from the dead. OBSERVED RESULT If a keyword tag was assigned in Windows, it is impossible to delete using digiKam. Tag will reappear after a resync from file metadata. This behavior only occurs for keywords in the XPkeywords metadata tag. EXPECTED RESULT When a tag is deleted in digiKam and sync'd to file metadata it is removed from ALL possible locations in file metadata. I don't want to see it anywhere ever again. SOFTWARE/OS VERSIONS Windows: Windows 10 Pro 1909
Forgot to add that I'm using digiKam 7.0.0 beta3 digiKam-7.0.0-beta3-20200422T165716-Win64-debug.exe
We use Exiv2 to read and write metadata. For some reason (I need to check) XPKeywords in Exiv2 is a read only tag. Maik
The technical reason from 10 years ago. https://dev.exiv2.org/boards/3/topics/530 Maik
Not a surprise that it is some bizarre Microsoft quirk. A possible low-effort resolution is to allow the option of removing the XPkeywords tag altogether when writing out metadata. This would resolve the issue of tags set in XPkeywords perpetually reappearing after each resync. I see this as much more favorable than the current behavior. In my version of Windows 10 it is able to read keyword tags from the other EXIF locations that digiKam writes to. So even if XPkeywords was blown away, Windows would still be able to get the tags from the other EXIF fields.
In BQM we have expanded the tool for removing metadata in digiKam-7.0.0-RC. It is easy to add the option to remove XPkeywords. Maik
Git commit 243d975d99bc8dfd8ec7ba2678d62eed62f1a7a6 by Maik Qualmann. Committed on 14/05/2020 at 05:44. Pushed by mqualmann into branch 'master'. add Exif.Image.XPKeywords to the remove metadata BQM tool M +7 -1 core/dplugins/bqm/metadata/removemetadata/removemetadata.cpp https://invent.kde.org/kde/digikam/commit/243d975d99bc8dfd8ec7ba2678d62eed62f1a7a6
I close the bug for digiKam. If you want, you can open a bug report for Exiv2, maybe there will be new insights that will fix the problem. https://github.com/Exiv2/exiv2/issues Maik
Exif:XP* tags can be updated with ExifTool : [gilles@localhost engine]$ exiftool -listw | grep XP AFAreaXPosition AFAreaXPosition1 AFAreaYPosition AFAreaYPosition1 XMPToolkit XPAuthor XPComment XPKeywords XPSubject XPTitle XPosition [gilles@localhost engine]$ exiftool -ver 12.00
Git commit b3c56d4cdedb4ad83c7baca89c32d011f1738090 by Gilles Caulier. Committed on 26/04/2021 at 08:58. Pushed by cgilles into branch 'master'. Use EXV container to translate automatically all metadata from ExifTool to Exiv2 Related: bug 426938, bug 416516, bug 360714 M +23 -76 core/libs/metadataengine/exiftool/exiftoolparser.cpp M +2 -5 core/libs/metadataengine/exiftool/exiftoolparser.h M +13 -38 core/tests/metadataengine/exiftool/exiftoolexport_cli.cpp https://invent.kde.org/graphics/digikam/commit/b3c56d4cdedb4ad83c7baca89c32d011f1738090
Git commit 183a05476b1fa485e5143e0bb28d84e3a8daa471 by Gilles Caulier. Committed on 26/04/2021 at 09:08. Pushed by cgilles into branch 'master'. Remove obsolete ExifToolTranslator class. We use now the auto conversion to Exiv2 through EXV container processed by ExivTool Related: bug 426938, bug 416516, bug 360714 M +0 -6 core/libs/metadataengine/CMakeLists.txt M +10 -114 core/libs/metadataengine/exiftool/exiftoolparser.cpp D +0 -81 core/libs/metadataengine/exiftool/exiftooltranslator.cpp D +0 -65 core/libs/metadataengine/exiftool/exiftooltranslator.h D +0 -196 core/libs/metadataengine/exiftool/exiftooltranslator_exif.cpp D +0 -51 core/libs/metadataengine/exiftool/exiftooltranslator_ignoredgroups.cpp D +0 -164 core/libs/metadataengine/exiftool/exiftooltranslator_iptc.cpp D +0 -76 core/libs/metadataengine/exiftool/exiftooltranslator_p.cpp D +0 -73 core/libs/metadataengine/exiftool/exiftooltranslator_p.h D +0 -439 core/libs/metadataengine/exiftool/exiftooltranslator_xmp.cpp M +0 -1 core/libs/widgets/metadata/exiftool/exiftoollistview.cpp M +0 -1 core/tests/metadataengine/exiftool/CMakeLists.txt D +0 -318 core/tests/metadataengine/exiftool/exiftoolxmldb_cli.cpp https://invent.kde.org/graphics/digikam/commit/183a05476b1fa485e5143e0bb28d84e3a8daa471
Git commit 434f065e74282cbb9335c2cc4db256007ca2ae5d by Gilles Caulier. Committed on 08/05/2021 at 16:46. Pushed by cgilles into branch 'master'. ExifTool support: add new method to get list of changes operated on metadata. The goal is to make a temporary EXV file to pass later to ExifTool to patch target file. Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 416516, bug 436286 M +162 -0 core/libs/metadataengine/engine/metaengine.cpp M +5 -0 core/libs/metadataengine/engine/metaengine.h M +0 -1 core/libs/metadataengine/engine/metaengine_p.cpp https://invent.kde.org/graphics/digikam/commit/434f065e74282cbb9335c2cc4db256007ca2ae5d
Git commit 2cb42fd246428932edd2049c59def826dcc9a420 by Gilles Caulier. Committed on 09/05/2021 at 08:13. Pushed by cgilles into branch 'master'. ExifTool support: now export the list of tags changes from Exif, Iptc, and Xmp in a temporary EXV file. We will pass later this file to ExifTool to patch target file. Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 416516, bug 436286 M +0 -186 core/libs/metadataengine/engine/metaengine.cpp M +8 -5 core/libs/metadataengine/engine/metaengine.h M +196 -0 core/libs/metadataengine/engine/metaengine_fileio.cpp M +4 -4 core/tests/metadataengine/CMakeLists.txt R +5 -4 core/tests/metadataengine/exportchanges_cli.cpp [from: core/tests/metadataengine/dmetadatadiff_cli.cpp - 082% similarity] https://invent.kde.org/graphics/digikam/commit/2cb42fd246428932edd2049c59def826dcc9a420
Git commit 2ef074a3f5c239bf4674c4cdda5bf99f511d8ae0 by Gilles Caulier. Committed on 09/05/2021 at 13:04. Pushed by cgilles into branch 'master'. ExifTool support: add new method to apply list of changes operated on metadata. A temporary EXV file constainer is computed with the list of changes to operated on Exif, Iptc, and Xmp. This EXV file is processed with ExifTool to patch metadata. Add new CLI test tool to try apply changes with EXV constainer. Here the file is patched with DMetadata::setImageDateTime() which change or add new tags in Exif, Iptc, and Xmp Exemple of changes processed to a CR3 raw image: CR3 ORIGINAL: exiftool -G:0:1:2:4 -exif:all -xmp:all 2020-09-22_21-27-23_0C4A1060.CR3_original [EXIF:IFD0:Image] Image Width : 8192 [EXIF:IFD0:Image] Image Height : 5464 [EXIF:IFD0:Image] Bits Per Sample : 8 8 8 [EXIF:IFD0:Image] Compression : JPEG (old-style) [EXIF:IFD0:Camera] Make : Canon [EXIF:IFD0:Camera] Camera Model Name : Canon EOS R5 [EXIF:IFD0:Image] Orientation : Rotate 90 CW [EXIF:IFD0:Image] Resolution Unit : inches [EXIF:IFD0:Author] Artist : kdmurray [EXIF:IFD0:Author] Copyright : [EXIF:ExifIFD:Image] Exposure Time : 1/200 [EXIF:ExifIFD:Image] F Number : 10.0 [EXIF:ExifIFD:Camera] Exposure Program : Manual [EXIF:ExifIFD:Image] ISO : 400 [EXIF:ExifIFD:Image] Sensitivity Type : Recommended Exposure Index [EXIF:ExifIFD:Image] Recommended Exposure Index : 400 [EXIF:ExifIFD:Image] Exif Version : 0231 [EXIF:ExifIFD:Time] Date/Time Original : 2020:09:22 21:27:23 [EXIF:ExifIFD:Time] Offset Time : +10:00 [EXIF:ExifIFD:Time] Offset Time Original : +10:00 [EXIF:ExifIFD:Time] Offset Time Digitized : +10:00 [EXIF:ExifIFD:Image] Components Configuration : Y, Cb, Cr, - [EXIF:ExifIFD:Image] Shutter Speed Value : 1/197 [EXIF:ExifIFD:Image] Aperture Value : 9.9 [EXIF:ExifIFD:Camera] Flash : On, Fired [EXIF:ExifIFD:Camera] Focal Length : 90.0 mm [EXIF:ExifIFD:Image] User Comment : [EXIF:ExifIFD:Time] Sub Sec Time : 59 [EXIF:ExifIFD:Time] Sub Sec Time Original : 59 [EXIF:ExifIFD:Time] Sub Sec Time Digitized : 59 [EXIF:ExifIFD:Image] Flashpix Version : 0100 [EXIF:ExifIFD:Image] Exif Image Width : 8192 [EXIF:ExifIFD:Image] Exif Image Height : 5464 [EXIF:ExifIFD:Camera] Focal Plane X Resolution : 5773.079634 [EXIF:ExifIFD:Camera] Focal Plane Y Resolution : 5769.799366 [EXIF:ExifIFD:Camera] Focal Plane Resolution Unit: inches [EXIF:ExifIFD:Image] Custom Rendered : Normal [EXIF:ExifIFD:Camera] Exposure Mode : Manual [EXIF:ExifIFD:Camera] Scene Capture Type : Standard [EXIF:ExifIFD:Image] Serial Number : 035021000124 [EXIF:ExifIFD:Image] Lens Info : 90mm f/0 [EXIF:ExifIFD:Image] Lens Serial Number : 0000000000 [EXIF:GPS:Location] GPS Version ID : 2.3.0.0 [EXIF:GPS:Location] GPS Altitude Ref : Above Sea Level [EXIF:GPS:Location] GPS Satellites : [EXIF:GPS:Location] GPS Status : Unknown () [EXIF:GPS:Location] GPS Measure Mode : Unknown () [XMP:XMP-xmp:Image] Rating : 0 *EXV constainer generated: exiftool -G:0:1:2:4 -exif:all -xmp:all 2020-09-22_21-27-23_0C4A1060_changes.exv [XMP:XMP-x:Document] XMP Toolkit : XMP Core 4.4.0-Exiv2 [XMP:XMP-exif:Time] Date/Time Original : 2021:05:09 15:02:43 [XMP:XMP-exif:Time] Date/Time Digitized : 2021:05:09 15:02:43 [XMP:XMP-tiff:Time] Date/Time Modified : 2021:05:09 15:02:43 [XMP:XMP-xmp:Time] Create Date : 2021:05:09 15:02:43 [XMP:XMP-xmp:Time] Metadata Date : 2021:05:09 15:02:43 [XMP:XMP-xmp:Time] Modify Date : 2021:05:09 15:02:43 *CR3 PATCHED: exiftool]$ exiftool -G:0:1:2:4 -exif:all -xmp:all 2020-09-22_21-27-23_0C4A1060.CR3 [EXIF:IFD0:Image] Image Width : 8192 [EXIF:IFD0:Image] Image Height : 5464 [EXIF:IFD0:Image] Bits Per Sample : 8 8 8 [EXIF:IFD0:Image] Compression : JPEG (old-style) [EXIF:IFD0:Camera] Make : Canon [EXIF:IFD0:Camera] Camera Model Name : Canon EOS R5 [EXIF:IFD0:Image] Orientation : Rotate 90 CW [EXIF:IFD0:Image] Resolution Unit : inches [EXIF:IFD0:Author] Artist : kdmurray [EXIF:IFD0:Author] Copyright : [EXIF:ExifIFD:Image] Exposure Time : 1/200 [EXIF:ExifIFD:Image] F Number : 10.0 [EXIF:ExifIFD:Camera] Exposure Program : Manual [EXIF:ExifIFD:Image] ISO : 400 [EXIF:ExifIFD:Image] Sensitivity Type : Recommended Exposure Index [EXIF:ExifIFD:Image] Recommended Exposure Index : 400 [EXIF:ExifIFD:Image] Exif Version : 0231 [EXIF:ExifIFD:Time] Offset Time : +10:00 [EXIF:ExifIFD:Time] Offset Time Original : +10:00 [EXIF:ExifIFD:Time] Offset Time Digitized : +10:00 [EXIF:ExifIFD:Image] Components Configuration : Y, Cb, Cr, - [EXIF:ExifIFD:Image] Shutter Speed Value : 1/197 [EXIF:ExifIFD:Image] Aperture Value : 9.9 [EXIF:ExifIFD:Camera] Flash : On, Fired [EXIF:ExifIFD:Camera] Focal Length : 90.0 mm [EXIF:ExifIFD:Image] User Comment : [EXIF:ExifIFD:Time] Sub Sec Time : 59 [EXIF:ExifIFD:Time] Sub Sec Time Original : 59 [EXIF:ExifIFD:Time] Sub Sec Time Digitized : 59 [EXIF:ExifIFD:Image] Flashpix Version : 0100 [EXIF:ExifIFD:Image] Exif Image Width : 8192 [EXIF:ExifIFD:Image] Exif Image Height : 5464 [EXIF:ExifIFD:Camera] Focal Plane X Resolution : 5773.079634 [EXIF:ExifIFD:Camera] Focal Plane Y Resolution : 5769.799366 [EXIF:ExifIFD:Camera] Focal Plane Resolution Unit: inches [EXIF:ExifIFD:Image] Custom Rendered : Normal [EXIF:ExifIFD:Camera] Exposure Mode : Manual [EXIF:ExifIFD:Camera] Scene Capture Type : Standard [EXIF:ExifIFD:Image] Serial Number : 035021000124 [EXIF:ExifIFD:Image] Lens Info : 90mm f/0 [EXIF:ExifIFD:Image] Lens Serial Number : 0000000000 [EXIF:GPS:Location] GPS Version ID : 2.3.0.0 [EXIF:GPS:Location] GPS Altitude Ref : Above Sea Level [EXIF:GPS:Location] GPS Satellites : [EXIF:GPS:Location] GPS Status : Unknown () [EXIF:GPS:Location] GPS Measure Mode : Unknown () [XMP:XMP-x:Document] XMP Toolkit : Image::ExifTool 12.00 [XMP:XMP-exif:Time] Date/Time Digitized : 2021:05:09 15:02:43 <====! [XMP:XMP-exif:Time] Date/Time Original : 2021:05:09 15:02:43 <====! [XMP:XMP-photoshop:Time] Date Created : 2021:05:09 15:02:43 <====! [XMP:XMP-tiff:Time] Date/Time Modified : 2021:05:09 15:02:43 <====! [XMP:XMP-xmp:Time] Create Date : 2021:05:09 15:02:43 <====! [XMP:XMP-xmp:Time] Metadata Date : 2021:05:09 15:02:43 <====! [XMP:XMP-xmp:Time] Modify Date : 2021:05:09 15:02:43 <====! [XMP:XMP-xmp:Image] Rating : 0 Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 416516, bug 436286 M +12 -2 core/libs/metadataengine/exiftool/exiftoolparser.h M +32 -0 core/libs/metadataengine/exiftool/exiftoolparser_command.cpp M +6 -0 core/libs/metadataengine/exiftool/exiftoolparser_output.cpp M +1 -0 core/libs/metadataengine/exiftool/exiftoolprocess.h M +2 -1 core/tests/metadataengine/exiftool/CMakeLists.txt C +20 -19 core/tests/metadataengine/exiftool/exiftoolapplychanges_cli.cpp [from: core/tests/metadataengine/exiftool/exiftoolwrite_cli.cpp - 059% similarity] M +1 -1 core/tests/metadataengine/exiftool/exiftoolwrite_cli.cpp https://invent.kde.org/graphics/digikam/commit/2ef074a3f5c239bf4674c4cdda5bf99f511d8ae0
Git commit 5507cb4c7779f42321d751d3788ee18562df6c9d by Gilles Caulier. Committed on 15/05/2021 at 15:14. Pushed by cgilles into branch 'master'. ExifToolParser: new command to copy tags from source file to a destination file. Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 416516, bug 436286, bug 381967 M +7 -0 core/libs/metadataengine/exiftool/exiftoolparser.h M +64 -0 core/libs/metadataengine/exiftool/exiftoolparser_command.cpp M +17 -1 core/libs/metadataengine/exiftool/exiftoolprocess.h https://invent.kde.org/graphics/digikam/commit/5507cb4c7779f42321d751d3788ee18562df6c9d
Git commit 8f332525788359d2c13c3e029bfb1b956dd5a4d2 by Gilles Caulier. Committed on 16/05/2021 at 10:09. Pushed by cgilles into branch 'master'. DNGWriter : include ExifTool Error View in Settings Widget. Fix API to check ExifTool program availability. Factoring codes. Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 416516, bug 436286, bug 381967 M +29 -5 core/libs/dngwriter/dngsettings.cpp M +6 -0 core/libs/dngwriter/dngsettings.h M +3 -10 core/libs/metadataengine/exiftool/exiftoolparser.cpp M +4 -1 core/libs/metadataengine/exiftool/exiftoolparser.h M +31 -21 core/libs/metadataengine/exiftool/exiftoolprocess.cpp M +2 -0 core/libs/metadataengine/exiftool/exiftoolprocess.h https://invent.kde.org/graphics/digikam/commit/8f332525788359d2c13c3e029bfb1b956dd5a4d2
Git commit 067a15c4ed14d75eb2ce3cc725fcba709131392e by Gilles Caulier. Committed on 17/05/2021 at 03:57. Pushed by cgilles into branch 'master'. DPlugin interface; add new method to be able to open an host application setup dialog page from a plugin. DNGWriter: add ExifTool error view to settings Widget. If ExifTool is not available, show error view and allow Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 416516, bug 436286, bug 381967 to customize installation from configuration panel. M +1 -1 core/app/main/digikamapp.cpp M +1 -0 core/app/main/digikamapp_p.h M +28 -0 core/dplugins/bqm/convert/converttodng/converttodng.cpp M +1 -1 core/dplugins/bqm/convert/converttodng/converttodng.h M +20 -1 core/libs/database/utils/ifaces/dbinfoiface.cpp M +2 -0 core/libs/database/utils/ifaces/dbinfoiface.h M +5 -1 core/libs/dngwriter/dngsettings.cpp M +4 -4 core/libs/dngwriter/dngwriter_postprocess.cpp M +4 -1 core/libs/dplugins/iface/dinfointerface.cpp M +13 -0 core/libs/dplugins/iface/dinfointerface.h M +1 -1 core/libs/metadataengine/exiftool/exiftoolparser.cpp M +6 -6 core/libs/widgets/metadata/exiftool/exiftoolconfpanel.cpp M +1 -1 core/libs/widgets/metadata/exiftool/exiftoollistview.cpp M +1 -0 core/showfoto/CMakeLists.txt M +1 -1 core/showfoto/main/showfoto.cpp M +2 -1 core/showfoto/main/showfoto_p.h A +66 -0 core/showfoto/main/showfotoinfoiface.cpp [License: GPL (v2+)] A +51 -0 core/showfoto/main/showfotoinfoiface.h [License: GPL (v2+)] M +2 -2 core/tests/metadataengine/exiftool/exiftoolmulticore_cli.cpp M +14 -1 core/utilities/queuemanager/dplugins/dpluginbqm.cpp M +7 -0 core/utilities/queuemanager/dplugins/dpluginbqm.h M +1 -0 core/utilities/queuemanager/main/queuemgrwindow.h M +10 -0 core/utilities/queuemanager/manager/batchtoolsfactory.cpp M +3 -0 core/utilities/queuemanager/manager/batchtoolsfactory.h https://invent.kde.org/graphics/digikam/commit/067a15c4ed14d75eb2ce3cc725fcba709131392e
Git commit 3a672f38cda7738356f19707a6a634ca91c269e6 by Gilles Caulier. Committed on 07/04/2022 at 04:45. Pushed by cgilles into branch 'master'. Write metadata with ExifTool backend if Exiv2 fails to process, for exemple with RAW files or Video files. Tested successfuly with a MP4 video to insert a comment. For RAW and other king of files as MPO or JPEG with more than 64kB of Exif segement, Exiv2 must be bannned to uses in cases of writting operations as files can be corrupted. This require more regression tests to validate ExifTool uses in place of Exiv2. Related: bug 406540, bug 416516, bug 237504, bug 384092, bug 264210, bug 326408, bug 134486, bug 309341, bug 219856, bug 377622, bug 325458, bug 170693, bug 448729, bug 338075, bug 436876, bug 366348 M +1 -0 core/libs/metadataengine/dmetadata/dmetadata.h M +43 -0 core/libs/metadataengine/dmetadata/dmetadata_exiftool.cpp M +49 -3 core/libs/metadataengine/dmetadata/dmetadata_fileio.cpp M +2 -2 core/libs/metadataengine/exiftool/exiftoolparser.h https://invent.kde.org/graphics/digikam/commit/3a672f38cda7738356f19707a6a634ca91c269e6
Git commit d71f6605893d5b1b801ebc425756114711c5fc97 by Maik Qualmann. Committed on 25/12/2022 at 10:20. Pushed by mqualmann into branch 'master'. add support for XPTitle and remove XP* metadata when writing Related: bug 463378, bug 422242, bug 450522 M +36 -1 core/libs/metadataengine/dmetadata/dmetadata_comments.cpp M +24 -10 core/libs/metadataengine/dmetadata/dmetadata_tags.cpp M +13 -5 core/libs/metadataengine/dmetadata/dmetadatasettingscontainer.cpp https://invent.kde.org/graphics/digikam/commit/d71f6605893d5b1b801ebc425756114711c5fc97
Git commit 0e93b5344bf740ad0db1ca85532a66f1f472146a by Maik Qualmann. Committed on 25/12/2022 at 13:40. Pushed by mqualmann into branch 'master'. add write support for XP* metadata when Exiftool writing is enabled By default, the legacy XP* metadata is disabled in a new config. Related: bug 463378, bug 422242, bug 450522 M +8 -5 NEWS M +22 -2 core/libs/metadataengine/dmetadata/dmetadata_comments.cpp M +13 -1 core/libs/metadataengine/dmetadata/dmetadata_tags.cpp M +3 -0 core/libs/metadataengine/dmetadata/dmetadatasettingscontainer.cpp https://invent.kde.org/graphics/digikam/commit/0e93b5344bf740ad0db1ca85532a66f1f472146a