@ -14,9 +14,9 @@ Index of this file:
// STB libraries includes
// STB libraries includes
// Context pointer
// Context pointer
// Generic helpers
// Generic helpers
// Misc data structures
// Flags, enums and data structures
// Main imgui context
// Main imgui context
// Tab bar, t ab item
// Tab bar, T ab item
// Internal API
// Internal API
*/
*/
@ -431,7 +431,7 @@ struct IMGUI_API ImChunkStream
} ;
} ;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Misc data structures
// Flags, enums and data structures
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
enum ImGuiButtonFlags_
enum ImGuiButtonFlags_
@ -1011,7 +1011,7 @@ struct ImGuiNextItemData
} ;
} ;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Tab s
// Tab bar, Tab item
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
struct ImGuiShrinkWidthItem
struct ImGuiShrinkWidthItem
@ -1111,7 +1111,7 @@ struct ImGuiContext
// Gamepad/keyboard Navigation
// Gamepad/keyboard Navigation
ImGuiWindow * NavWindow ; // Focused window for navigation. Could be called 'FocusWindow'
ImGuiWindow * NavWindow ; // Focused window for navigation. Could be called 'FocusWindow'
ImGuiID NavId ; // Focused item for navigation
ImGuiID NavId ; // Focused item for navigation
ImGuiID NavFocusScopeId ;
ImGuiID NavFocusScopeId ; // Identify a selection scope (selection code often wants to "clear other items" when landing on an item of the selection set)
ImGuiID NavActivateId ; // ~~ (g.ActiveId == 0) && IsNavInputPressed(ImGuiNavInput_Activate) ? NavId : 0, also set when calling ActivateItem()
ImGuiID NavActivateId ; // ~~ (g.ActiveId == 0) && IsNavInputPressed(ImGuiNavInput_Activate) ? NavId : 0, also set when calling ActivateItem()
ImGuiID NavActivateDownId ; // ~~ IsNavInputDown(ImGuiNavInput_Activate) ? NavId : 0
ImGuiID NavActivateDownId ; // ~~ IsNavInputDown(ImGuiNavInput_Activate) ? NavId : 0
ImGuiID NavActivatePressedId ; // ~~ IsNavInputPressed(ImGuiNavInput_Activate) ? NavId : 0
ImGuiID NavActivatePressedId ; // ~~ IsNavInputPressed(ImGuiNavInput_Activate) ? NavId : 0
@ -1133,8 +1133,8 @@ struct ImGuiContext
bool NavAnyRequest ; // ~~ NavMoveRequest || NavInitRequest
bool NavAnyRequest ; // ~~ NavMoveRequest || NavInitRequest
bool NavInitRequest ; // Init request for appearing window to select first item
bool NavInitRequest ; // Init request for appearing window to select first item
bool NavInitRequestFromMove ;
bool NavInitRequestFromMove ;
ImGuiID NavInitResultId ;
ImGuiID NavInitResultId ; // Init request result (first item of the window, or one for which SetItemDefaultFocus() was called)
ImRect NavInitResultRectRel ;
ImRect NavInitResultRectRel ; // Init request result rectangle (relative to parent window)
bool NavMoveFromClampedRefRect ; // Set by manual scrolling, if we scroll to a point where NavId isn't visible we reset navigation from visible items
bool NavMoveFromClampedRefRect ; // Set by manual scrolling, if we scroll to a point where NavId isn't visible we reset navigation from visible items
bool NavMoveRequest ; // Move request for this frame
bool NavMoveRequest ; // Move request for this frame
ImGuiNavMoveFlags NavMoveRequestFlags ;
ImGuiNavMoveFlags NavMoveRequestFlags ;
@ -1146,10 +1146,10 @@ struct ImGuiContext
ImGuiNavMoveResult NavMoveResultLocalVisibleSet ; // Best move request candidate within NavWindow that are mostly visible (when using ImGuiNavMoveFlags_AlsoScoreVisibleSet flag)
ImGuiNavMoveResult NavMoveResultLocalVisibleSet ; // Best move request candidate within NavWindow that are mostly visible (when using ImGuiNavMoveFlags_AlsoScoreVisibleSet flag)
ImGuiNavMoveResult NavMoveResultOther ; // Best move request candidate within NavWindow's flattened hierarchy (when using ImGuiWindowFlags_NavFlattened flag)
ImGuiNavMoveResult NavMoveResultOther ; // Best move request candidate within NavWindow's flattened hierarchy (when using ImGuiWindowFlags_NavFlattened flag)
// Navigation: Windowing (CTRL+TAB , holding Menu button + directional pads to move/resize)
// Navigation: Windowing (CTRL+TAB for list, or Menu button + keys or directional pads to move/resize)
ImGuiWindow * NavWindowingTarget ; // When selecting a window (holding Menu+FocusPrev/Next, or equivalent of CTRL-TAB) this window is temporarily displayed top-most.
ImGuiWindow * NavWindowingTarget ; // Target window when doing CTRL+Tab (or Pad Menu + FocusPrev/Next), this window is temporarily displayed top-most!
ImGuiWindow * NavWindowingTargetAnim ; // Record of last valid NavWindowingTarget until DimBgRatio and NavWindowingHighlightAlpha becomes 0.0f
ImGuiWindow * NavWindowingTargetAnim ; // Record of last valid NavWindowingTarget until DimBgRatio and NavWindowingHighlightAlpha becomes 0.0f , so the fade-out can stay on it.
ImGuiWindow * NavWindowingList ;
ImGuiWindow * NavWindowingList Window ; // Internal window actually listing the CTRL+Tab contents
float NavWindowingTimer ;
float NavWindowingTimer ;
float NavWindowingHighlightAlpha ;
float NavWindowingHighlightAlpha ;
bool NavWindowingToggleLayer ;
bool NavWindowingToggleLayer ;
@ -1226,8 +1226,8 @@ struct ImGuiContext
ImChunkStream < ImGuiWindowSettings > SettingsWindows ; // ImGuiWindow .ini settings entries
ImChunkStream < ImGuiWindowSettings > SettingsWindows ; // ImGuiWindow .ini settings entries
// Capture/Logging
// Capture/Logging
bool LogEnabled ;
bool LogEnabled ; // Currently capturing
ImGuiLogType LogType ;
ImGuiLogType LogType ; // Capture target
ImFileHandle LogFile ; // If != NULL log to stdout/ file
ImFileHandle LogFile ; // If != NULL log to stdout/ file
ImGuiTextBuffer LogBuffer ; // Accumulation buffer when log to clipboard. This is pointer so our GImGui static constructor doesn't call heap allocators.
ImGuiTextBuffer LogBuffer ; // Accumulation buffer when log to clipboard. This is pointer so our GImGui static constructor doesn't call heap allocators.
float LogLinePosY ;
float LogLinePosY ;
@ -1237,7 +1237,7 @@ struct ImGuiContext
int LogDepthToExpandDefault ; // Default/stored value for LogDepthMaxExpand if not specified in the LogXXX function call.
int LogDepthToExpandDefault ; // Default/stored value for LogDepthMaxExpand if not specified in the LogXXX function call.
// Debug Tools
// Debug Tools
bool DebugItemPickerActive ;
bool DebugItemPickerActive ; // Item picker is active (started with DebugStartItemPicker())
ImGuiID DebugItemPickerBreakId ; // Will call IM_DEBUG_BREAK() when encountering this id
ImGuiID DebugItemPickerBreakId ; // Will call IM_DEBUG_BREAK() when encountering this id
// Misc
// Misc
@ -1322,7 +1322,7 @@ struct ImGuiContext
NavMoveRequestKeyMods = ImGuiKeyModFlags_None ;
NavMoveRequestKeyMods = ImGuiKeyModFlags_None ;
NavMoveDir = NavMoveDirLast = NavMoveClipDir = ImGuiDir_None ;
NavMoveDir = NavMoveDirLast = NavMoveClipDir = ImGuiDir_None ;
NavWindowingTarget = NavWindowingTargetAnim = NavWindowingList = NULL ;
NavWindowingTarget = NavWindowingTargetAnim = NavWindowingList Window = NULL ;
NavWindowingTimer = NavWindowingHighlightAlpha = 0.0f ;
NavWindowingTimer = NavWindowingHighlightAlpha = 0.0f ;
NavWindowingToggleLayer = false ;
NavWindowingToggleLayer = false ;
@ -1563,8 +1563,8 @@ struct IMGUI_API ImGuiWindow
ImGuiID NavLastIds [ ImGuiNavLayer_COUNT ] ; // Last known NavId for this window, per layer (0/1)
ImGuiID NavLastIds [ ImGuiNavLayer_COUNT ] ; // Last known NavId for this window, per layer (0/1)
ImRect NavRectRel [ ImGuiNavLayer_COUNT ] ; // Reference rectangle, in window relative space
ImRect NavRectRel [ ImGuiNavLayer_COUNT ] ; // Reference rectangle, in window relative space
bool MemoryCompacted ;
bool MemoryCompacted ; // Set when window extraneous data have been garbage collected
int MemoryDrawListIdxCapacity ;
int MemoryDrawListIdxCapacity ; // Backup of last idx/vtx count, so when waking up the window we can preallocate and avoid iterative alloc/copy
int MemoryDrawListVtxCapacity ;
int MemoryDrawListVtxCapacity ;
public :
public :
@ -1736,7 +1736,7 @@ namespace ImGui
IMGUI_API ImVec2 ScrollToBringRectIntoView ( ImGuiWindow * window , const ImRect & item_rect ) ;
IMGUI_API ImVec2 ScrollToBringRectIntoView ( ImGuiWindow * window , const ImRect & item_rect ) ;
// Basic Accessors
// Basic Accessors
inline ImGuiID GetItemID ( ) { ImGuiContext & g = * GImGui ; return g . CurrentWindow - > DC . LastItemId ; }
inline ImGuiID GetItemID ( ) { ImGuiContext & g = * GImGui ; return g . CurrentWindow - > DC . LastItemId ; } // Get ID of last item (~~ often same ImGui::GetID(label) beforehand)
inline ImGuiItemStatusFlags GetItemStatusFlags ( ) { ImGuiContext & g = * GImGui ; return g . CurrentWindow - > DC . LastItemStatusFlags ; }
inline ImGuiItemStatusFlags GetItemStatusFlags ( ) { ImGuiContext & g = * GImGui ; return g . CurrentWindow - > DC . LastItemStatusFlags ; }
inline ImGuiID GetActiveID ( ) { ImGuiContext & g = * GImGui ; return g . ActiveId ; }
inline ImGuiID GetActiveID ( ) { ImGuiContext & g = * GImGui ; return g . ActiveId ; }
inline ImGuiID GetFocusID ( ) { ImGuiContext & g = * GImGui ; return g . NavId ; }
inline ImGuiID GetFocusID ( ) { ImGuiContext & g = * GImGui ; return g . NavId ; }
@ -1747,7 +1747,7 @@ namespace ImGui
IMGUI_API void SetHoveredID ( ImGuiID id ) ;
IMGUI_API void SetHoveredID ( ImGuiID id ) ;
IMGUI_API void KeepAliveID ( ImGuiID id ) ;
IMGUI_API void KeepAliveID ( ImGuiID id ) ;
IMGUI_API void MarkItemEdited ( ImGuiID id ) ; // Mark data associated to given item as "edited", used by IsItemDeactivatedAfterEdit() function.
IMGUI_API void MarkItemEdited ( ImGuiID id ) ; // Mark data associated to given item as "edited", used by IsItemDeactivatedAfterEdit() function.
IMGUI_API void PushOverrideID ( ImGuiID id ) ; // Push given value a t the top of the ID stack (whereas PushID combines old and new hashes)
IMGUI_API void PushOverrideID ( ImGuiID id ) ; // Push given value a s-is a t the top of the ID stack (whereas PushID combines old and new hashes)
// Basic Helpers for widget code
// Basic Helpers for widget code
IMGUI_API void ItemSize ( const ImVec2 & size , float text_baseline_y = - 1.0f ) ;
IMGUI_API void ItemSize ( const ImVec2 & size , float text_baseline_y = - 1.0f ) ;
@ -1775,14 +1775,14 @@ namespace ImGui
IMGUI_API void OpenPopupEx ( ImGuiID id ) ;
IMGUI_API void OpenPopupEx ( ImGuiID id ) ;
IMGUI_API void ClosePopupToLevel ( int remaining , bool restore_focus_to_window_under_popup ) ;
IMGUI_API void ClosePopupToLevel ( int remaining , bool restore_focus_to_window_under_popup ) ;
IMGUI_API void ClosePopupsOverWindow ( ImGuiWindow * ref_window , bool restore_focus_to_window_under_popup ) ;
IMGUI_API void ClosePopupsOverWindow ( ImGuiWindow * ref_window , bool restore_focus_to_window_under_popup ) ;
IMGUI_API bool IsPopupOpen ( ImGuiID id ) ; // Test for id within current popup stack level (currently begin-ed into); this doesn't scan the whole popup stack!
IMGUI_API bool IsPopupOpen ( ImGuiID id ) ; // Test for id at current popup stack level (currently begin-ed into); this doesn't scan the whole popup stack!
IMGUI_API bool BeginPopupEx ( ImGuiID id , ImGuiWindowFlags extra_flags ) ;
IMGUI_API bool BeginPopupEx ( ImGuiID id , ImGuiWindowFlags extra_flags ) ;
IMGUI_API void BeginTooltipEx ( ImGuiWindowFlags extra_flags , ImGuiTooltipFlags tooltip_flags ) ;
IMGUI_API void BeginTooltipEx ( ImGuiWindowFlags extra_flags , ImGuiTooltipFlags tooltip_flags ) ;
IMGUI_API ImGuiWindow * GetTopMostPopupModal ( ) ;
IMGUI_API ImGuiWindow * GetTopMostPopupModal ( ) ;
IMGUI_API ImVec2 FindBestWindowPosForPopup ( ImGuiWindow * window ) ;
IMGUI_API ImVec2 FindBestWindowPosForPopup ( ImGuiWindow * window ) ;
IMGUI_API ImVec2 FindBestWindowPosForPopupEx ( const ImVec2 & ref_pos , const ImVec2 & size , ImGuiDir * last_dir , const ImRect & r_outer , const ImRect & r_avoid , ImGuiPopupPositionPolicy policy = ImGuiPopupPositionPolicy_Default ) ;
IMGUI_API ImVec2 FindBestWindowPosForPopupEx ( const ImVec2 & ref_pos , const ImVec2 & size , ImGuiDir * last_dir , const ImRect & r_outer , const ImRect & r_avoid , ImGuiPopupPositionPolicy policy = ImGuiPopupPositionPolicy_Default ) ;
// Navigation
// Gamepad/Keyboard Navigation
IMGUI_API void NavInitWindow ( ImGuiWindow * window , bool force_reinit ) ;
IMGUI_API void NavInitWindow ( ImGuiWindow * window , bool force_reinit ) ;
IMGUI_API bool NavMoveRequestButNoResultYet ( ) ;
IMGUI_API bool NavMoveRequestButNoResultYet ( ) ;
IMGUI_API void NavMoveRequestCancel ( ) ;
IMGUI_API void NavMoveRequestCancel ( ) ;
@ -1795,8 +1795,10 @@ namespace ImGui
IMGUI_API void SetNavID ( ImGuiID id , int nav_layer , ImGuiID focus_scope_id ) ;
IMGUI_API void SetNavID ( ImGuiID id , int nav_layer , ImGuiID focus_scope_id ) ;
IMGUI_API void SetNavIDWithRectRel ( ImGuiID id , int nav_layer , ImGuiID focus_scope_id , const ImRect & rect_rel ) ;
IMGUI_API void SetNavIDWithRectRel ( ImGuiID id , int nav_layer , ImGuiID focus_scope_id , const ImRect & rect_rel ) ;
// Focus scope (WIP)
// Focus Scope (WIP)
IMGUI_API void PushFocusScope ( ImGuiID id ) ; // Note: this is storing in same stack as IDStack, so Push/Pop mismatch will be reported there.
// This is generally used to identify a selection set (multiple of which may be in the same window), as selection
// patterns generally need to react (e.g. clear selection) when landing on an item of the set.
IMGUI_API void PushFocusScope ( ImGuiID id ) ;
IMGUI_API void PopFocusScope ( ) ;
IMGUI_API void PopFocusScope ( ) ;
inline ImGuiID GetFocusScopeID ( ) { ImGuiContext & g = * GImGui ; return g . NavFocusScopeId ; }
inline ImGuiID GetFocusScopeID ( ) { ImGuiContext & g = * GImGui ; return g . NavFocusScopeId ; }
@ -1816,7 +1818,7 @@ namespace ImGui
IMGUI_API void ClearDragDrop ( ) ;
IMGUI_API void ClearDragDrop ( ) ;
IMGUI_API bool IsDragDropPayloadBeingAccepted ( ) ;
IMGUI_API bool IsDragDropPayloadBeingAccepted ( ) ;
// Internal Columns API (this is not exposed because we will encourage transitioning to the Tables api )
// Internal Columns API (this is not exposed because we will encourage transitioning to the Tables API )
IMGUI_API void BeginColumns ( const char * str_id , int count , ImGuiColumnsFlags flags = 0 ) ; // setup number of columns. use an identifier to distinguish multiple column sets. close with EndColumns().
IMGUI_API void BeginColumns ( const char * str_id , int count , ImGuiColumnsFlags flags = 0 ) ; // setup number of columns. use an identifier to distinguish multiple column sets. close with EndColumns().
IMGUI_API void EndColumns ( ) ; // close columns
IMGUI_API void EndColumns ( ) ; // close columns
IMGUI_API void PushColumnClipRect ( int column_index ) ;
IMGUI_API void PushColumnClipRect ( int column_index ) ;