29 float m_activeFlashStartSecs = 0.0f;
30 static constexpr float kActiveFlashDuration = 0.12f;
33 float m_frameTimeSecs = 0.0f;
36 std::vector<ID> m_propagatedHoverIDs;
37 std::vector<ID> m_propagatedFocusedIDs;
41 bool m_hoverSuppressed =
false;
45 bool m_pendingCaptureClear =
false;
52 bool m_focusVisible =
false;
68 void SetCaptureID(
ID id) { m_captureID = id; m_pendingCaptureClear =
false; }
93 void FlashActive(
ID id) { m_activeFlashID = id; m_activeFlashStartSecs = m_frameTimeSecs; }
95 bool IsActiveFlashing(
ID id)
const {
return id == m_activeFlashID && (m_frameTimeSecs - m_activeFlashStartSecs) < kActiveFlashDuration; }
The hovered, active, focused and captured elements, the active window, the one-shot click,...
Definition gui_interaction_state.h:17
bool IsActiveFlashing(ID id) const
Definition gui_interaction_state.h:95
ID GetCaptureID() const
Definition gui_interaction_state.h:62
ScrollAxis ConsumeFocusScrollAxis()
Definition gui_interaction_state.h:74
void SetPropagatedFocusedIDs(std::vector< ID > v)
Definition gui_interaction_state.h:100
ID GetHoveredID() const
Definition gui_interaction_state.h:57
void SetFrameTime(float secs)
The frame time in seconds that FlashActive is timed against; set once at BeginFrame.
Definition gui_interaction_state.h:88
void SetCaptureID(ID id)
Definition gui_interaction_state.h:68
const std::vector< ID > & GetPropagatedFocusedIDs() const
Definition gui_interaction_state.h:98
void SuppressHover()
Definition gui_interaction_state.h:80
void SetFocusVisible(bool visible)
Shows the focus ring (:focus-visible), e.g. on a dialog's default button.
Definition gui_interaction_state.h:77
void SetFocusIDNoScroll(ID id)
Definition gui_interaction_state.h:72
void SetPropagatedHoverIDs(std::vector< ID > v)
Definition gui_interaction_state.h:99
float GetFrameTime() const
Definition gui_interaction_state.h:89
void ClearHoverSuppression()
Definition gui_interaction_state.h:81
void FlashActive(ID id)
Reports id as Active for about 120 ms: the pressed look of a keyboard or programmatic activation.
Definition gui_interaction_state.h:93
bool HasBeenClicked(ID id) const
Definition gui_interaction_state.h:84
const std::vector< ID > & GetPropagatedHoverIDs() const
Definition gui_interaction_state.h:97
void SetClicked(ID id)
Definition gui_interaction_state.h:85
ID GetActiveFlashID() const
Definition gui_interaction_state.h:94
bool IsFocusVisible() const
Definition gui_interaction_state.h:78
void SetActiveWindowID(ID id)
Definition gui_interaction_state.h:66
void SetFocusIDScrollAxis(ID id, ScrollAxis a)
Definition gui_interaction_state.h:73
void ReleaseCaptureID()
Definition gui_interaction_state.h:69
ID GetActiveWindowID() const
Definition gui_interaction_state.h:64
ID GetFocusedID() const
Definition gui_interaction_state.h:63
void SetFocusID(ID id)
Definition gui_interaction_state.h:71
void EndFrame(ID overID, MouseButtons mouseButtons, ID disabledID=ID::Invalid())
Applies hover, active-ID edges and deferred capture release; clears the click and expired flash.
ID GetHoveredDisabledID() const
The disabled element under the cursor when nothing is hovered: it takes no input, but shows its toolt...
Definition gui_interaction_state.h:60
bool IsHoverSuppressed() const
Definition gui_interaction_state.h:82
ID GetActiveID() const
Definition gui_interaction_state.h:61
ScrollAxis
Axis mask for scroll-into-view, so e.g. a horizontal sizer doesn't scroll vertically.
Definition gui_scroll_management.h:22
@ Both
Definition gui_scroll_management.h:26
@ None
Definition gui_scroll_management.h:23
Definition gui_logging.h:24
A 64-bit element ID whose bit layout depends on its IDMode.
Definition gui_id.h:23
static constexpr ID Invalid()
The "no element" ID (all bits zero); also the default for optional ID parameters.
Definition gui_id.h:66