CrimsonUI · Lesson 8 of 9
Push Screens with Input Routing
Before you start
- Completed: Push Your HUD
Chapters
1. Subclass CrimsonActivatableWidget
Every screen is a Blueprint parented on `CrimsonActivatableWidget`. Its class defaults declare how input behaves while the screen is on top:
| Input Config | Meaning |
| Default | Don't change input — inherit whatever is active |
| Game And Menu | Both game and UI receive input |
| Game | Game input only |
| Menu | UI input only — the usual choice for menus |
Alongside it: Game/Menu Mouse Capture Mode, plus bIgnoreMoveInput / bIgnoreLookInput to freeze the pawn while a menu is up. Set them once on the widget — pushing and popping applies them automatically.
2. Push and pop
Push exactly like the HUD — Push Content To Layer For Player onto UI.Layer.Menu (the async node has Before/After Push pins). Close the screen from inside with Deactivate Widget; the stack pops it and input routing reverts to whatever is beneath.
C++ pushes synchronously via UCrimsonUIExtensions::PushContentToLayer_ForPlayer(LocalPlayer, LayerTag, WidgetClass); remove with PopContentFromLayer or FindAndRemoveWidgetFromLayer.
CrimsonHUDLayout has an Escape Menu Class + escape input action — set them and the HUD opens your pause menu on UI.Layer.Menu without any graph code.