Thank you all for the stimulating discussion.
A new build is available.
What changed / was fixed
Empty-mask overlay
-
An empty mask now does not show the infamous yellow wall. If the mask overlay is active, it shows:
- The underlying image, if nothing is masked.
- The actual overlay in all other cases, so you can see what is masked.
- If there are mask elements but they all contribute nothing (e.g., very low opacity, or wrongly parametrized parametric channels) you will just see the grayscale image and no yellow overlay. Note that this is how master behaves already, no change here (just adding this to avoid creating confusion).
-
A mask is NOT empty if at least one of the following conditions hold:
- There are at least one shape or raster mask
- There is at least one parametric channel which is NOT in its default state
In other words, a newly added parametric channel is considered a no-op. It only starts effectively contributing to the mask after you move at least one control point.
It follows that adding a channel, turning on the mask overlay, and using the picker now shows the real image (and not the yellow wall) until the range is actually narrowed. This alone is a big improvement imho.
Parametric-channel color picker
- Clicking the picker no longer immediately samples ~90% of the image — it waits for the user’s own drag.
- Refined so it only starts blank when never used or explicitly reset (not on every re-arm); resetting the slider makes the picker forget its last selection.
- New “no-op” badge on a parametric-channel row when its range is a full-span no-op, taking precedence over the low-opacity badge (drawn as a solid red dot — a placeholder pending a proper icon). This is just a visual aid that “you added a parametric channel that is not doing anything yet”.
All these things are demonstrated below:
Group headers
- Fixed a few bugs related to an empty group header being rendered through a different code path, which caused several inconsistencies. In particular:
- Clicking an empty group’s lead icon no longer incorrectly opens the operator picker.
- Ctrl+click rename now works also on empty groups.
- Empty group headers now render a disabled opacity slider and match real groups’ layout/spacing exactly.
- Do not offer the option to change a bottom group between-group operator, since it is a no-op already. This addresses the previously reported refresh issues.
Precise-value popup (“whisker”)
- Hovering now live-previews control-point position and the popup’s own displayed value, without committing; the mask recompute stays debounced until the pointer stops.
- Pressing
Escwhile the popup is visible restore the pre-popup values. - Points that you push around while moving another control point move back to their original position if they are allowed to (i.e., if you move the active point back in the other direction).
The demo below shows the hovering behavior. Dragging works in the same way:
What I could not fix
- I could not reproduce the issue with (some of) the opacity sliders of clustered shapes not showing. @finestructure if you stumble on it again, could you please try understand if it is reproducible, and maybe share steps to repro?
- Also the issue reported by @Christian_Pfister, could not repro yet.