SUMMARY Checking the ‘Fired’, ‘Function’ or ‘Red-eye remove’ checkboxes in the Exif metadata enables/disables *all* three checkboxes. That is, they basically act as *one* checkbox. STEPS TO REPRODUCE 1. Open/create an image. 2. Go to ‘Layer → Edit metadata → Exif → Flash’ 3. Click either the ‘Fired’, ‘Function’ or ‘Red-eye remove’ checkboxes. 4. Repeat step 3. OBSERVED RESULT The three checkboxes ‘Fired’, ‘Function’ or ‘Red-eye remove’ are all enabled/disabled when you click one of them. EXPECTED RESULT I’m not sure what ‘Function’ refers to, but the checkboxes should at least be *partially* independent.
Related: bug 396669 It looks like metadata are kind of broken anyway. I could "fix this" by making it behave independently, but... I can't test if it breaks anything, because most of the code in metadata is either broken or wrong. The reason why all those checkboxes behave as one is that they are all distinguished as "exif:Flash" instead of "exif:Flash:Fired" etc. because exif:Flash, differently from all other fields in exif: scheme, is a structure (which means it contains other fields inside). The code looks like someone knew about it, but later forgot or at least forgot to check it in practice. The second/main reason is that all updates in one widget are propagated to all other widgets using the name of the property as the only thing that differentiate between what should get the notification and what shouldn't. All checkboxes has a property called "checked", which is why when one changes its "checked" status, they all change it too. Looks like the main reason for all those trouble is not separating the model and the view enough. I'm gonna unassign myself now. This bug depends on untangling the metadata code and fixing other bugs. It shouldn't be very difficult, but it will take some time, especially because half of the information is in .ui files and schemes.
Relevant files: plugins/extensions/metadataeditor/kis_entry_editor.cpp plugins/extensions/metadataeditor/kis_metadata_editor.cpp plugins/extensions/metadataeditor/editors/exif.ui krita/data/metadata/schemas/exif.schema The most relevant functions are void KisEntryEditor::valueChanged() and KisMetaDataEditor::KisMetaDataEditor(QWidget* parent, KisMetaData::Store* originalStore)
A possibly relevant merge request was started @ https://invent.kde.org/graphics/krita/-/merge_requests/1004
Git commit db407cd7993794ebb125ae63b720e11325f7365c by L. E. Segovia. Committed on 17/08/2021 at 16:37. Pushed by lsegovia into branch 'master'. Metadata editor: reimplement entry handling This commit implements entry handling based entirely on a few compile time macros and Qt's newer signal/slot syntax. This allows me to add support for flash metadata, which was broken since at least 67b39577b6dc9e5f2e5e2885b2188cbd393c55f6. While at it, add a default icon to the Dublin Core pane; the old one in the xmlgui file was missing since forever. CCMAIL: kimageshop@kde.org M +0 -6 Messages.sh M +0 -1 plugins/extensions/metadataeditor/CMakeLists.txt M +12 -30 plugins/extensions/metadataeditor/editors/dublincore.ui D +0 -33 plugins/extensions/metadataeditor/editors/dublincore.xmlgui M +4 -101 plugins/extensions/metadataeditor/editors/exif.ui D +0 -157 plugins/extensions/metadataeditor/editors/exif.xmlgui M +144 -99 plugins/extensions/metadataeditor/kis_meta_data_editor.cc M +1 -0 plugins/extensions/metadataeditor/kis_meta_data_editor.h https://invent.kde.org/graphics/krita/commit/db407cd7993794ebb125ae63b720e11325f7365c
Git commit 8702bb9001eb09519e5b8f49d3634816f8db398d by L. E. Segovia. Committed on 25/08/2021 at 01:48. Pushed by lsegovia into branch 'krita/5.0'. Metadata editor: reimplement entry handling This commit implements entry handling based entirely on a few compile time macros and Qt's newer signal/slot syntax. This allows me to add support for flash metadata, which was broken since at least 67b39577b6dc9e5f2e5e2885b2188cbd393c55f6. While at it, add a default icon to the Dublin Core pane; the old one in the xmlgui file was missing since forever. CCMAIL: kimageshop@kde.org (cherry picked from commit db407cd7993794ebb125ae63b720e11325f7365c) M +0 -6 Messages.sh M +0 -1 plugins/extensions/metadataeditor/CMakeLists.txt M +12 -30 plugins/extensions/metadataeditor/editors/dublincore.ui D +0 -33 plugins/extensions/metadataeditor/editors/dublincore.xmlgui M +4 -101 plugins/extensions/metadataeditor/editors/exif.ui D +0 -157 plugins/extensions/metadataeditor/editors/exif.xmlgui M +144 -99 plugins/extensions/metadataeditor/kis_meta_data_editor.cc M +1 -0 plugins/extensions/metadataeditor/kis_meta_data_editor.h https://invent.kde.org/graphics/krita/commit/8702bb9001eb09519e5b8f49d3634816f8db398d