26 void Clear() { m_requested = {}; }
42 void Set(
ID id) { m_focusedID = id; }
44 void Commit() { m_prevFocusedID = m_focusedID; }
51 uint32_t m_disabledLevel = 0;
52 uint32_t m_selectedLevel = 0;
53 uint32_t m_indeterminateLevel = 0;
54 uint32_t m_invalidLevel = 0;
58 void PopDisabled() {
if (m_disabledLevel > 0) m_disabledLevel--;
else ReportUnmatchedPop(
"ConstructionScopes: PopDisabled without PushDisabled (ignored)"); }
61 void PopSelected() {
if (m_selectedLevel > 0) m_selectedLevel--;
else ReportUnmatchedPop(
"ConstructionScopes: PopSelected without PushSelected (ignored)"); }
64 void PopInvalid() {
if (m_invalidLevel > 0) m_invalidLevel--;
else ReportUnmatchedPop(
"ConstructionScopes: PopInvalid without PushInvalid (ignored)"); }
67 void PopIndeterminate() {
if (m_indeterminateLevel > 0) m_indeterminateLevel--;
else ReportUnmatchedPop(
"ConstructionScopes: PopIndeterminate without PushIndeterminate (ignored)"); }
72 bool IsInvalid()
const {
return m_invalidLevel > 0; }
74 void Reset() { m_disabledLevel = 0; m_selectedLevel = 0; m_indeterminateLevel = 0; m_invalidLevel = 0; }
79 bool IsBalanced()
const {
return m_disabledLevel == 0 && m_selectedLevel == 0 && m_indeterminateLevel == 0 && m_invalidLevel == 0; }
83 static void ReportUnmatchedPop(
const char* message)
Construction-time Push/Pop nesting read by GUIStateManager::GetCurrentState.
Definition gui_state_atomic_values.h:50
void PopDisabled()
Definition gui_state_atomic_values.h:58
bool IsDisabled() const
Definition gui_state_atomic_values.h:69
void Restore(const ConstructionScopes &kept)
Definition gui_state_atomic_values.h:78
void PopSelected()
Definition gui_state_atomic_values.h:61
bool IsBalanced() const
Definition gui_state_atomic_values.h:79
void PushIndeterminate()
Definition gui_state_atomic_values.h:66
void PopIndeterminate()
Definition gui_state_atomic_values.h:67
void PushDisabled()
Definition gui_state_atomic_values.h:57
void Reset()
Definition gui_state_atomic_values.h:74
void PushInvalid()
Definition gui_state_atomic_values.h:63
bool IsIndeterminate() const
Definition gui_state_atomic_values.h:71
ConstructionScopes SetAside()
Clears the scopes for something built inside them that isn't part of them (a tooltip on a disabled co...
Definition gui_state_atomic_values.h:77
bool IsSelected() const
Definition gui_state_atomic_values.h:70
void PopInvalid()
Definition gui_state_atomic_values.h:64
void PushSelected()
Definition gui_state_atomic_values.h:60
bool IsInvalid() const
Definition gui_state_atomic_values.h:72
The mouse cursor requested this frame.
Definition gui_state_atomic_values.h:20
MouseCursor Get() const
Definition gui_state_atomic_values.h:27
void Request(MouseCursor c)
Definition gui_state_atomic_values.h:25
void Clear()
Definition gui_state_atomic_values.h:26
The focused text editor, plus the one as of the last Commit, to detect changes.
Definition gui_state_atomic_values.h:32
void Commit()
Definition gui_state_atomic_values.h:44
ID GetFocusedID() const
Definition gui_state_atomic_values.h:37
void Clear()
Definition gui_state_atomic_values.h:43
ID GetPrevFocusedID() const
The focused editor as of the last Commit, when the text system switched its editor to it: the field t...
Definition gui_state_atomic_values.h:40
void Set(ID id)
Definition gui_state_atomic_values.h:42
constexpr LogCategory MakeLogCategory(std::string_view staticName)
A category named staticName, which must be a static string.
Definition gui_logging.h:41
void ReportMisuse(LogCategory category, const char *message)
API misuse (an unbalanced Begin/End, a call outside its frame, ...) is reported, not fatal: the calle...
MouseCursor
Mouse cursor shown over an element (CSS: cursor).
Definition gui_style.h:478
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