ID:115327
 
Redundant
Applies to:DM Language
Status: Redundant

This feature has already been implemented, or is already achievable with existing methods.
I would like it if mouse_opacity supported more settings. Currently we have 3: invisible, normal, and opaque. I would like opaque (2) to be expanded on, such that: if I have an object with mouse_opacity=3, it's selected over 2, but anything with 2 is still opaque to everything else that is lower than 2. This would allow me to more easily define "layers" of what is clickable, than with the default 3 settings.
Any word on this? A note of how feasible it is, or something of that nature?
I believe this is relatively feasible, though from an optimization standpoint I'm not thrilled by it. The current hit test algorithm basically stops at the first atom under the cursor with opacity=2, or with opacity=1 and a translucent pixel. It's a pretty simple test and the stop-when-done aspsect is pretty nice. Adding a value of 3 with this behavior means that the entire icon list will have to be checked, at least until an appropriate 3 is found. The hit test is pretty quick in general, but this uglifies the algorithm a lot. Internally though I don't think anything would have to change much, since the mouse_opacity value is currently 2 bits and we have room for a fourth choice.

On the other hand a very simple workaround is to add an invisible overlay with a high layer and give the atom mouse_opacity=2.
Yeah, that would work for adding an extra layer, but I'm talking about having more than four layers. I wouldn't mind if it were capped off at something like 16 or 32 if that were necessary.

Unless you meant by "fourth choice" you would set it to 3, and then it would handle it by layer instead of mouse_opacity?
mouse_opacity is basically a combination of layer and the 2-bit flag right now, so I definitely meant 3 would involve the layer--the highest hit with layer 3 would be the "winner". But that also means you have a perfectly good workaround right now in adding an overlay with a higher layer and giving the atom a mouse_opacity of 2.
Gotcha. I hadn't actually thought of that, so for now, that is what I will do. Thanks!