Hidden HUDs (Ctrl+Alt+H) can still be clicked #187

Closed
opened 2026-09-29 22:41:25 +00:00 by sky_line · 0 comments
Owner

Steps: wear a HUD, press Ctrl+Alt+H (hide HUD attachments). The HUDs disappear, but clicking where they were still clicks them (touches, menus, hover cursor).

Expected: hidden HUDs can't be clicked or hovered (as in the official viewer / Firestorm).

Cause (found while filing): under Vulkan, LLPipeline::lineSegmentIntersectInHUD (pipeline.cpp ~2640) returns vkPickHUD(...) straight away; nothing on that path checks LLPipeline::sShowHUDAttachments. The GL path only reached HUD drawables through the HUD spatial partition, which isn't populated/visible while HUDs are hidden, so it never needed an explicit check. The HUD render pass does check it (llappviewer.cpp ~4931: HUD view-proj only passed when shown), so rendering and picking disagree.

Fix: return no hit from the VK HUD pick while !sShowHUDAttachments. Also check the other HUD-pick entry points that bypass lineSegmentIntersectInHUD (e.g. cursorIntersect with a specific this_object that is a HUD attachment -- llviewerwindow.cpp ~4980 -- hover / right-click on a remembered object) and HUD hover text / selection beams on hidden HUDs. RLVa: hiding stays blocked while a locked HUD is worn (llviewermenu.cpp ~9980), unchanged.

**Steps:** wear a HUD, press Ctrl+Alt+H (hide HUD attachments). The HUDs disappear, but clicking where they were still clicks them (touches, menus, hover cursor). **Expected:** hidden HUDs can't be clicked or hovered (as in the official viewer / Firestorm). **Cause (found while filing):** under Vulkan, `LLPipeline::lineSegmentIntersectInHUD` (pipeline.cpp ~2640) returns `vkPickHUD(...)` straight away; nothing on that path checks `LLPipeline::sShowHUDAttachments`. The GL path only reached HUD drawables through the HUD spatial partition, which isn't populated/visible while HUDs are hidden, so it never needed an explicit check. The HUD render pass does check it (`llappviewer.cpp` ~4931: HUD view-proj only passed when shown), so rendering and picking disagree. **Fix:** return no hit from the VK HUD pick while `!sShowHUDAttachments`. Also check the other HUD-pick entry points that bypass `lineSegmentIntersectInHUD` (e.g. `cursorIntersect` with a specific `this_object` that is a HUD attachment -- llviewerwindow.cpp ~4980 -- hover / right-click on a remembered object) and HUD hover text / selection beams on hidden HUDs. RLVa: hiding stays blocked while a locked HUD is worn (llviewermenu.cpp ~9980), unchanged.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#187
No description provided.