Internals: rename ImGuiTreeNodeStackData::InFlags and ImGuiNavItemData::InFlags to ItemFlags too.
This commit is contained in:
parent
e6b5cafe65
commit
0f6a463fae
16
imgui.cpp
16
imgui.cpp
@ -4530,7 +4530,7 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags)
|
|||||||
// (this does not rely on LastItemData it can be called from a ButtonBehavior() call not following an ItemAdd() call)
|
// (this does not rely on LastItemData it can be called from a ButtonBehavior() call not following an ItemAdd() call)
|
||||||
// FIXME-LEGACY: the 'ImGuiItemFlags item_flags' parameter was added on 2023-06-28.
|
// FIXME-LEGACY: the 'ImGuiItemFlags item_flags' parameter was added on 2023-06-28.
|
||||||
// If you used this in your legacy/custom widgets code:
|
// If you used this in your legacy/custom widgets code:
|
||||||
// - Commonly: if your ItemHoverable() call comes after an ItemAdd() call: pass 'item_flags = g.LastItemData.InFlags'.
|
// - Commonly: if your ItemHoverable() call comes after an ItemAdd() call: pass 'item_flags = g.LastItemData.ItemFlags'.
|
||||||
// - Rare: otherwise you may pass 'item_flags = 0' (ImGuiItemFlags_None) unless you want to benefit from special behavior handled by ItemHoverable.
|
// - Rare: otherwise you may pass 'item_flags = 0' (ImGuiItemFlags_None) unless you want to benefit from special behavior handled by ItemHoverable.
|
||||||
bool ImGui::ItemHoverable(const ImRect& bb, ImGuiID id, ImGuiItemFlags item_flags)
|
bool ImGui::ItemHoverable(const ImRect& bb, ImGuiID id, ImGuiItemFlags item_flags)
|
||||||
{
|
{
|
||||||
@ -10847,7 +10847,7 @@ bool ImGui::ItemAdd(const ImRect& bb, ImGuiID id, const ImRect* nav_bb_arg, ImGu
|
|||||||
IM_ASSERT(id != window->ID && "Cannot have an empty ID at the root of a window. If you need an empty label, use ## and read the FAQ about how the ID Stack works!");
|
IM_ASSERT(id != window->ID && "Cannot have an empty ID at the root of a window. If you need an empty label, use ## and read the FAQ about how the ID Stack works!");
|
||||||
}
|
}
|
||||||
//if (g.IO.KeyAlt) window->DrawList->AddRect(bb.Min, bb.Max, IM_COL32(255,255,0,120)); // [DEBUG]
|
//if (g.IO.KeyAlt) window->DrawList->AddRect(bb.Min, bb.Max, IM_COL32(255,255,0,120)); // [DEBUG]
|
||||||
//if ((g.LastItemData.InFlags & ImGuiItemFlags_NoNav) == 0)
|
//if ((g.LastItemData.ItemFlags & ImGuiItemFlags_NoNav) == 0)
|
||||||
// window->DrawList->AddRect(g.LastItemData.NavRect.Min, g.LastItemData.NavRect.Max, IM_COL32(255,255,0,255)); // [DEBUG]
|
// window->DrawList->AddRect(g.LastItemData.NavRect.Min, g.LastItemData.NavRect.Max, IM_COL32(255,255,0,255)); // [DEBUG]
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -12444,9 +12444,9 @@ static void ImGui::NavApplyItemToResult(ImGuiNavItemData* result)
|
|||||||
result->Window = window;
|
result->Window = window;
|
||||||
result->ID = g.LastItemData.ID;
|
result->ID = g.LastItemData.ID;
|
||||||
result->FocusScopeId = g.CurrentFocusScopeId;
|
result->FocusScopeId = g.CurrentFocusScopeId;
|
||||||
result->InFlags = g.LastItemData.ItemFlags;
|
result->ItemFlags = g.LastItemData.ItemFlags;
|
||||||
result->RectRel = WindowRectAbsToRel(window, g.LastItemData.NavRect);
|
result->RectRel = WindowRectAbsToRel(window, g.LastItemData.NavRect);
|
||||||
if (result->InFlags & ImGuiItemFlags_HasSelectionUserData)
|
if (result->ItemFlags & ImGuiItemFlags_HasSelectionUserData)
|
||||||
{
|
{
|
||||||
IM_ASSERT(g.NextItemData.SelectionUserData != ImGuiSelectionUserData_Invalid);
|
IM_ASSERT(g.NextItemData.SelectionUserData != ImGuiSelectionUserData_Invalid);
|
||||||
result->SelectionUserData = g.NextItemData.SelectionUserData; // INTENTIONAL: At this point this field is not cleared in NextItemData. Avoid unnecessary copy to LastItemData.
|
result->SelectionUserData = g.NextItemData.SelectionUserData; // INTENTIONAL: At this point this field is not cleared in NextItemData. Avoid unnecessary copy to LastItemData.
|
||||||
@ -12652,7 +12652,7 @@ void ImGui::NavMoveRequestResolveWithPastTreeNode(ImGuiNavItemData* result, ImGu
|
|||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
g.NavMoveScoringItems = false;
|
g.NavMoveScoringItems = false;
|
||||||
g.LastItemData.ID = tree_node_data->ID;
|
g.LastItemData.ID = tree_node_data->ID;
|
||||||
g.LastItemData.ItemFlags = tree_node_data->InFlags & ~ImGuiItemFlags_HasSelectionUserData; // Losing SelectionUserData, recovered next-frame (cheaper).
|
g.LastItemData.ItemFlags = tree_node_data->ItemFlags & ~ImGuiItemFlags_HasSelectionUserData; // Losing SelectionUserData, recovered next-frame (cheaper).
|
||||||
g.LastItemData.NavRect = tree_node_data->NavRect;
|
g.LastItemData.NavRect = tree_node_data->NavRect;
|
||||||
NavApplyItemToResult(result); // Result this instead of implementing a NavApplyPastTreeNodeToResult()
|
NavApplyItemToResult(result); // Result this instead of implementing a NavApplyPastTreeNodeToResult()
|
||||||
NavClearPreferredPosForAxis(ImGuiAxis_Y);
|
NavClearPreferredPosForAxis(ImGuiAxis_Y);
|
||||||
@ -13039,7 +13039,7 @@ void ImGui::NavInitRequestApplyResult()
|
|||||||
g.NavJustMovedToFocusScopeId = result->FocusScopeId;
|
g.NavJustMovedToFocusScopeId = result->FocusScopeId;
|
||||||
g.NavJustMovedToKeyMods = 0;
|
g.NavJustMovedToKeyMods = 0;
|
||||||
g.NavJustMovedToIsTabbing = false;
|
g.NavJustMovedToIsTabbing = false;
|
||||||
g.NavJustMovedToHasSelectionData = (result->InFlags & ImGuiItemFlags_HasSelectionUserData) != 0;
|
g.NavJustMovedToHasSelectionData = (result->ItemFlags & ImGuiItemFlags_HasSelectionUserData) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply result from previous navigation init request (will typically select the first item, unless SetItemDefaultFocus() has been called)
|
// Apply result from previous navigation init request (will typically select the first item, unless SetItemDefaultFocus() has been called)
|
||||||
@ -13298,7 +13298,7 @@ void ImGui::NavMoveRequestApplyResult()
|
|||||||
g.NavJustMovedToFocusScopeId = result->FocusScopeId;
|
g.NavJustMovedToFocusScopeId = result->FocusScopeId;
|
||||||
g.NavJustMovedToKeyMods = g.NavMoveKeyMods;
|
g.NavJustMovedToKeyMods = g.NavMoveKeyMods;
|
||||||
g.NavJustMovedToIsTabbing = (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) != 0;
|
g.NavJustMovedToIsTabbing = (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) != 0;
|
||||||
g.NavJustMovedToHasSelectionData = (result->InFlags & ImGuiItemFlags_HasSelectionUserData) != 0;
|
g.NavJustMovedToHasSelectionData = (result->ItemFlags & ImGuiItemFlags_HasSelectionUserData) != 0;
|
||||||
//IMGUI_DEBUG_LOG_NAV("[nav] NavJustMovedFromFocusScopeId = 0x%08X, NavJustMovedToFocusScopeId = 0x%08X\n", g.NavJustMovedFromFocusScopeId, g.NavJustMovedToFocusScopeId);
|
//IMGUI_DEBUG_LOG_NAV("[nav] NavJustMovedFromFocusScopeId = 0x%08X, NavJustMovedToFocusScopeId = 0x%08X\n", g.NavJustMovedFromFocusScopeId, g.NavJustMovedToFocusScopeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -13318,7 +13318,7 @@ void ImGui::NavMoveRequestApplyResult()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Tabbing: Activates Inputable, otherwise only Focus
|
// Tabbing: Activates Inputable, otherwise only Focus
|
||||||
if ((g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) && (result->InFlags & ImGuiItemFlags_Inputable) == 0)
|
if ((g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) && (result->ItemFlags & ImGuiItemFlags_Inputable) == 0)
|
||||||
g.NavMoveFlags &= ~ImGuiNavMoveFlags_Activate;
|
g.NavMoveFlags &= ~ImGuiNavMoveFlags_Activate;
|
||||||
|
|
||||||
// Activate
|
// Activate
|
||||||
|
@ -823,8 +823,8 @@ enum ImGuiDataTypePrivate_
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
// Extend ImGuiItemFlags
|
// Extend ImGuiItemFlags
|
||||||
// - input: PushItemFlag() manipulates g.CurrentItemFlags, ItemAdd() calls may add extra flags.
|
// - input: PushItemFlag() manipulates g.CurrentItemFlags, g.NextItemData.ItemFlags, ItemAdd() calls may add extra flags too.
|
||||||
// - output: stored in g.LastItemData.InFlags
|
// - output: stored in g.LastItemData.ItemFlags
|
||||||
enum ImGuiItemFlagsPrivate_
|
enum ImGuiItemFlagsPrivate_
|
||||||
{
|
{
|
||||||
// Controlled by user
|
// Controlled by user
|
||||||
@ -908,7 +908,7 @@ enum ImGuiButtonFlagsPrivate_
|
|||||||
ImGuiButtonFlags_AlignTextBaseLine = 1 << 15, // vertically align button to match text baseline - ButtonEx() only // FIXME: Should be removed and handled by SmallButton(), not possible currently because of DC.CursorPosPrevLine
|
ImGuiButtonFlags_AlignTextBaseLine = 1 << 15, // vertically align button to match text baseline - ButtonEx() only // FIXME: Should be removed and handled by SmallButton(), not possible currently because of DC.CursorPosPrevLine
|
||||||
ImGuiButtonFlags_NoKeyModsAllowed = 1 << 16, // disable mouse interaction if a key modifier is held
|
ImGuiButtonFlags_NoKeyModsAllowed = 1 << 16, // disable mouse interaction if a key modifier is held
|
||||||
ImGuiButtonFlags_NoHoldingActiveId = 1 << 17, // don't set ActiveId while holding the mouse (ImGuiButtonFlags_PressedOnClick only)
|
ImGuiButtonFlags_NoHoldingActiveId = 1 << 17, // don't set ActiveId while holding the mouse (ImGuiButtonFlags_PressedOnClick only)
|
||||||
ImGuiButtonFlags_NoNavFocus = 1 << 18, // don't override navigation focus when activated (FIXME: this is essentially used every time an item uses ImGuiItemFlags_NoNav, but because legacy specs don't requires LastItemData to be set ButtonBehavior(), we can't poll g.LastItemData.InFlags)
|
ImGuiButtonFlags_NoNavFocus = 1 << 18, // don't override navigation focus when activated (FIXME: this is essentially used every time an item uses ImGuiItemFlags_NoNav, but because legacy specs don't requires LastItemData to be set ButtonBehavior(), we can't poll g.LastItemData.ItemFlags)
|
||||||
ImGuiButtonFlags_NoHoveredOnFocus = 1 << 19, // don't report as hovered when nav focus is on this item
|
ImGuiButtonFlags_NoHoveredOnFocus = 1 << 19, // don't report as hovered when nav focus is on this item
|
||||||
ImGuiButtonFlags_NoSetKeyOwner = 1 << 20, // don't set key/input owner on the initial click (note: mouse buttons are keys! often, the key in question will be ImGuiKey_MouseLeft!)
|
ImGuiButtonFlags_NoSetKeyOwner = 1 << 20, // don't set key/input owner on the initial click (note: mouse buttons are keys! often, the key in question will be ImGuiKey_MouseLeft!)
|
||||||
ImGuiButtonFlags_NoTestKeyOwner = 1 << 21, // don't test key/input owner when polling the key (note: mouse buttons are keys! often, the key in question will be ImGuiKey_MouseLeft!)
|
ImGuiButtonFlags_NoTestKeyOwner = 1 << 21, // don't test key/input owner when polling the key (note: mouse buttons are keys! often, the key in question will be ImGuiKey_MouseLeft!)
|
||||||
@ -1250,7 +1250,7 @@ struct ImGuiTreeNodeStackData
|
|||||||
{
|
{
|
||||||
ImGuiID ID;
|
ImGuiID ID;
|
||||||
ImGuiTreeNodeFlags TreeFlags;
|
ImGuiTreeNodeFlags TreeFlags;
|
||||||
ImGuiItemFlags InFlags; // Used for nav landing
|
ImGuiItemFlags ItemFlags; // Used for nav landing
|
||||||
ImRect NavRect; // Used for nav landing
|
ImRect NavRect; // Used for nav landing
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1590,14 +1590,14 @@ struct ImGuiNavItemData
|
|||||||
ImGuiID ID; // Init,Move // Best candidate item ID
|
ImGuiID ID; // Init,Move // Best candidate item ID
|
||||||
ImGuiID FocusScopeId; // Init,Move // Best candidate focus scope ID
|
ImGuiID FocusScopeId; // Init,Move // Best candidate focus scope ID
|
||||||
ImRect RectRel; // Init,Move // Best candidate bounding box in window relative space
|
ImRect RectRel; // Init,Move // Best candidate bounding box in window relative space
|
||||||
ImGuiItemFlags InFlags; // ????,Move // Best candidate item flags
|
ImGuiItemFlags ItemFlags; // ????,Move // Best candidate item flags
|
||||||
float DistBox; // Move // Best candidate box distance to current NavId
|
float DistBox; // Move // Best candidate box distance to current NavId
|
||||||
float DistCenter; // Move // Best candidate center distance to current NavId
|
float DistCenter; // Move // Best candidate center distance to current NavId
|
||||||
float DistAxial; // Move // Best candidate axial distance to current NavId
|
float DistAxial; // Move // Best candidate axial distance to current NavId
|
||||||
ImGuiSelectionUserData SelectionUserData;//I+Mov // Best candidate SetNextItemSelectionUserData() value. Valid if (InFlags & ImGuiItemFlags_HasSelectionUserData)
|
ImGuiSelectionUserData SelectionUserData;//I+Mov // Best candidate SetNextItemSelectionUserData() value. Valid if (ItemFlags & ImGuiItemFlags_HasSelectionUserData)
|
||||||
|
|
||||||
ImGuiNavItemData() { Clear(); }
|
ImGuiNavItemData() { Clear(); }
|
||||||
void Clear() { Window = NULL; ID = FocusScopeId = 0; InFlags = 0; SelectionUserData = -1; DistBox = DistCenter = DistAxial = FLT_MAX; }
|
void Clear() { Window = NULL; ID = FocusScopeId = 0; ItemFlags = 0; SelectionUserData = -1; DistBox = DistCenter = DistAxial = FLT_MAX; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// Storage for PushFocusScope()
|
// Storage for PushFocusScope()
|
||||||
@ -2177,7 +2177,7 @@ struct ImGuiContext
|
|||||||
ImGuiID NavJustMovedToFocusScopeId; // Just navigated to this focus scope id (result of a successfully MoveRequest).
|
ImGuiID NavJustMovedToFocusScopeId; // Just navigated to this focus scope id (result of a successfully MoveRequest).
|
||||||
ImGuiKeyChord NavJustMovedToKeyMods;
|
ImGuiKeyChord NavJustMovedToKeyMods;
|
||||||
bool NavJustMovedToIsTabbing; // Copy of ImGuiNavMoveFlags_IsTabbing. Maybe we should store whole flags.
|
bool NavJustMovedToIsTabbing; // Copy of ImGuiNavMoveFlags_IsTabbing. Maybe we should store whole flags.
|
||||||
bool NavJustMovedToHasSelectionData; // Copy of move result's InFlags & ImGuiItemFlags_HasSelectionUserData). Maybe we should just store ImGuiNavItemData.
|
bool NavJustMovedToHasSelectionData; // Copy of move result's ItemFlags & ImGuiItemFlags_HasSelectionUserData). Maybe we should just store ImGuiNavItemData.
|
||||||
|
|
||||||
// Navigation: Windowing (CTRL+TAB for list, or Menu button + keys or directional pads to move/resize)
|
// Navigation: Windowing (CTRL+TAB for list, or Menu button + keys or directional pads to move/resize)
|
||||||
ImGuiKeyChord ConfigNavWindowingKeyNext; // = ImGuiMod_Ctrl | ImGuiKey_Tab (or ImGuiMod_Super | ImGuiKey_Tab on OS X). For reconfiguration (see #4828)
|
ImGuiKeyChord ConfigNavWindowingKeyNext; // = ImGuiMod_Ctrl | ImGuiKey_Tab (or ImGuiMod_Super | ImGuiKey_Tab on OS X). For reconfiguration (see #4828)
|
||||||
|
@ -6457,7 +6457,7 @@ static void TreeNodeStoreStackData(ImGuiTreeNodeFlags flags)
|
|||||||
ImGuiTreeNodeStackData* tree_node_data = &g.TreeNodeStack.back();
|
ImGuiTreeNodeStackData* tree_node_data = &g.TreeNodeStack.back();
|
||||||
tree_node_data->ID = g.LastItemData.ID;
|
tree_node_data->ID = g.LastItemData.ID;
|
||||||
tree_node_data->TreeFlags = flags;
|
tree_node_data->TreeFlags = flags;
|
||||||
tree_node_data->InFlags = g.LastItemData.ItemFlags;
|
tree_node_data->ItemFlags = g.LastItemData.ItemFlags;
|
||||||
tree_node_data->NavRect = g.LastItemData.NavRect;
|
tree_node_data->NavRect = g.LastItemData.NavRect;
|
||||||
window->DC.TreeHasStackDataDepthMask |= (1 << window->DC.TreeDepth);
|
window->DC.TreeHasStackDataDepthMask |= (1 << window->DC.TreeDepth);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user