for custom metadata of type 'enum', LrC does NOT correctly show the rule inside a SC dialog when the SC is reopened
Description of Issue
I defined in a plugin a custom metadata "Intent", of type “enum”, which can have any of the following values: "Expressive", "Personal", "Documentary" (the plugin code is here: https://github.com/mrzgll/ma-intent-metadata).
The metadata is set by the user in the metadata panel.
In order to check if there are any photos with Intent not initialized (i.e. nil), I created a Smart Collection with the condition "Intent" is "No Value.
The Smart Collection works correctly, showing all photos whose ‘Intent’ metadata has not been assigned yet.
If I reopen the Smart Collection I always find the condition changed: "No Value" is no longer there, there is a blank field instead. If I save this Smart Collection, it no longer works.
Lightroom Classic Version Number
15.6
OS Version Number
Microsoft Windows 11 Pro
Version 10.0.26300 Build 26300
Step-by-step Reproduction Instructions
- Launch Lightroom Classic
- Open a catalog of your choice (it shall contain at least 1 photo)
- Install and activate the attached plugin, which defines the custom metadata ‘Intent’
- Create a Smart Collection with the following rule: “Intent is No Value” and save it. Since no value has been already assigned to ‘Intent’, the Smart Collection correctly shows all catalog photos.
- Reopen the Smart Collection and verify its rule. Then save it.
The Expected Result
The rule should be the one previously saved, i.e. “Intent is No Value”.
The Actual Result
The rule is changed in “Intent is <a blank field>”.
After the Smart Collection is saved, it shows no photos.
Further information
Launching the command “Export Smart Collection Settings” after step 4 and step 5 shows the following results.
After step 4:
s = {
id = "3FF9746A-521E-498D-AE9D-9D332862E6CB",
internalName = "Smart Collection 2",
title = "Smart Collection 2",
type = "LibrarySmartCollection",
value = {
{
criteria = "sdk:com.mrzgll.intentmetadata.intent",
operation = "==",
},
combine = "intersect",
},
version = 0,
}
After step 5:
s = {
id = "4A72739F-2BDA-421C-AB4F-A777E346F30F",
internalName = "Smart Collection 2b",
title = "Smart Collection 2b",
type = "LibrarySmartCollection",
value = {
{
criteria = "sdk:com.mrzgll.intentmetadata.intent",
operation = "==",
value = false,
},
combine = "intersect",
},
version = 0,
}
