Adds per-duplicate duplicate/original buttons to the duplicate manager.#21399
Adds per-duplicate duplicate/original buttons to the duplicate manager.#21399masterpiga wants to merge 1 commit into
Conversation
|
@masterpiga how do you handle the grouping? Everything is grouped with the "original" original or is the duplicate grouped with the parent if the parent is not the original? I tested and I have a thought (I know.... 😄). Let's say I edit the original, and then create a duplicate (1) with history stack. Then I edit 1 and want to keep it. But I also have another direction to take 1, so I want to duplicate the original 1, not the original 0. I tried that and got the original 0 duplicated. To me when I pick original on duplicate 1 if it's going to give me duplicate of original 0 then it's a useless button. If I wanted a duplicate of original 0 then I would go to 0 and hit the original button. I also wonder how we are going to keep track of what's the parent of what. Maybe some kind of darktable based tagging ( EDIT: We could do 2 things to keep track of the duplicate relationships, filename and version number. Filename would have appended _01, _02, etc for direct descendants and _01, _01_01, _01_02, _02, _03, _03_01 for descendants of descendants. The version number could be a string instead of a number and then we could have 1, 1.1, 1.1.1, 1.1.2, in other words each generation getting another decimal point. EDIT 2: Does this make your head hurt 🤣 |
|
Thanks for your feedback, Will!
I didn't change how grouping is handled, it works just like before.
I am not following, there is only one original, i.e., the raw file with no edits. This change only changes the UI, it does not alter the logic of how duplicates work.
It's what the original button used to do also before this change. The only difference is that before "original" would always take the original of the currently developed image. Whereas now it takes the original of whatever row's button you click. The image will be identical. Tags and other metadata are copied from the selected image. Concretely this is the same behavior as before, only that now you don't have to open an image in the darkroom to create a duplicate or a virgin copy.
I think this is all tangent and unrelated. This change is basically a no-op functionality wise, it is just a very focused UX improvement.
Just a bit 😅! It's smelting hot here, my head was hurting already before 😭 |
I don't know 😂 I don't understand if there is a regression, or you are just describing how you think that it should work. If you do the same steps with the current duplicate manager do you get a different result? That shouldn't be the case. I am not changing any behavior here, the change should be purely cosmetic. This is the duplicate manager at head. If I:
I get exactly the same as (0) before my edits, i.e., the image with no edits. IIUC, this is exactly what you get with the change, which is WAI. Screen.Recording.2026-06-23.at.20.17.15.mp4
Nice catch, thanks. That needs fixing. |
|
You are right, the behavior is the same, but having the original icon on each image implies, to me at least, that I will get the image that it's descended from, not the original original. If you are only ever going to get the original original, then, IMO, there should only be one button. I can live with it, but I do think users are going to be confused. |
Eh! This was my first response when the feature was originally proposed:
OTOH the tooltips are clear, so hopefully that will help clear the doubts. I still think it's a net win, because (1) one does not need to develop an image before it can be duplicated, and (2) the UI real estate is used more efficiently. |


Fixes #21353.
Incidentally, also fixes a pre-existing leak in the row loop:
gtk_label_new(g_strdup(chl))->gtk_label_new(chl)(the label copies its argument; theg_strdupleaked on every rebuild).Screen.Recording.2026-06-22.at.21.37.09.mp4