|
@@ -18,6 +18,7 @@ Index of this file:
|
|
|
// [SECTION] Generic helpers
|
|
|
// [SECTION] ImDrawList support
|
|
|
// [SECTION] Widgets support: flags, enums, data structures
|
|
|
+// [SECTION] Navigation support
|
|
|
// [SECTION] Columns support
|
|
|
// [SECTION] Multi-select support
|
|
|
// [SECTION] Docking support
|
|
@@ -915,49 +916,6 @@ enum ImGuiInputReadMode
|
|
|
ImGuiInputReadMode_RepeatFast
|
|
|
};
|
|
|
|
|
|
-enum ImGuiNavHighlightFlags_
|
|
|
-{
|
|
|
- ImGuiNavHighlightFlags_None = 0,
|
|
|
- ImGuiNavHighlightFlags_TypeDefault = 1 << 0,
|
|
|
- ImGuiNavHighlightFlags_TypeThin = 1 << 1,
|
|
|
- ImGuiNavHighlightFlags_AlwaysDraw = 1 << 2, // Draw rectangular highlight if (g.NavId == id) _even_ when using the mouse.
|
|
|
- ImGuiNavHighlightFlags_NoRounding = 1 << 3
|
|
|
-};
|
|
|
-
|
|
|
-enum ImGuiNavDirSourceFlags_
|
|
|
-{
|
|
|
- ImGuiNavDirSourceFlags_None = 0,
|
|
|
- ImGuiNavDirSourceFlags_Keyboard = 1 << 0,
|
|
|
- ImGuiNavDirSourceFlags_PadDPad = 1 << 1,
|
|
|
- ImGuiNavDirSourceFlags_PadLStick = 1 << 2
|
|
|
-};
|
|
|
-
|
|
|
-enum ImGuiNavMoveFlags_
|
|
|
-{
|
|
|
- ImGuiNavMoveFlags_None = 0,
|
|
|
- ImGuiNavMoveFlags_LoopX = 1 << 0, // On failed request, restart from opposite side
|
|
|
- ImGuiNavMoveFlags_LoopY = 1 << 1,
|
|
|
- ImGuiNavMoveFlags_WrapX = 1 << 2, // On failed request, request from opposite side one line down (when NavDir==right) or one line up (when NavDir==left)
|
|
|
- ImGuiNavMoveFlags_WrapY = 1 << 3, // This is not super useful but provided for completeness
|
|
|
- ImGuiNavMoveFlags_AllowCurrentNavId = 1 << 4, // Allow scoring and considering the current NavId as a move target candidate. This is used when the move source is offset (e.g. pressing PageDown actually needs to send a Up move request, if we are pressing PageDown from the bottom-most item we need to stay in place)
|
|
|
- ImGuiNavMoveFlags_AlsoScoreVisibleSet = 1 << 5, // Store alternate result in NavMoveResultLocalVisibleSet that only comprise elements that are already fully visible (used by PageUp/PageDown)
|
|
|
- ImGuiNavMoveFlags_ScrollToEdge = 1 << 6
|
|
|
-};
|
|
|
-
|
|
|
-enum ImGuiNavForward
|
|
|
-{
|
|
|
- ImGuiNavForward_None,
|
|
|
- ImGuiNavForward_ForwardQueued,
|
|
|
- ImGuiNavForward_ForwardActive
|
|
|
-};
|
|
|
-
|
|
|
-enum ImGuiNavLayer
|
|
|
-{
|
|
|
- ImGuiNavLayer_Main = 0, // Main scrolling layer
|
|
|
- ImGuiNavLayer_Menu = 1, // Menu layer (access with Alt/ImGuiNavInput_Menu)
|
|
|
- ImGuiNavLayer_COUNT
|
|
|
-};
|
|
|
-
|
|
|
enum ImGuiPopupPositionPolicy
|
|
|
{
|
|
|
ImGuiPopupPositionPolicy_Default,
|
|
@@ -1104,20 +1062,6 @@ struct ImGuiPopupData
|
|
|
ImGuiPopupData() { memset(this, 0, sizeof(*this)); OpenFrameCount = -1; }
|
|
|
};
|
|
|
|
|
|
-struct ImGuiNavItemData
|
|
|
-{
|
|
|
- ImGuiWindow* Window; // Init,Move // Best candidate window (result->ItemWindow->RootWindowForNav == request->Window)
|
|
|
- ImGuiID ID; // Init,Move // Best candidate item ID
|
|
|
- ImGuiID FocusScopeId; // Init,Move // Best candidate focus scope ID
|
|
|
- ImRect RectRel; // Init,Move // Best candidate bounding box in window relative space
|
|
|
- float DistBox; // Move // Best candidate box distance to current NavId
|
|
|
- float DistCenter; // Move // Best candidate center distance to current NavId
|
|
|
- float DistAxial; // Move // Best candidate axial distance to current NavId
|
|
|
-
|
|
|
- ImGuiNavItemData() { Clear(); }
|
|
|
- void Clear() { Window = NULL; ID = FocusScopeId = 0; RectRel = ImRect(); DistBox = DistCenter = DistAxial = FLT_MAX; }
|
|
|
-};
|
|
|
-
|
|
|
enum ImGuiNextWindowDataFlags_
|
|
|
{
|
|
|
ImGuiNextWindowDataFlags_None = 0,
|
|
@@ -1207,6 +1151,67 @@ struct ImGuiPtrOrIndex
|
|
|
ImGuiPtrOrIndex(int index) { Ptr = NULL; Index = index; }
|
|
|
};
|
|
|
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+// [SECTION] Navigation support
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+
|
|
|
+enum ImGuiNavHighlightFlags_
|
|
|
+{
|
|
|
+ ImGuiNavHighlightFlags_None = 0,
|
|
|
+ ImGuiNavHighlightFlags_TypeDefault = 1 << 0,
|
|
|
+ ImGuiNavHighlightFlags_TypeThin = 1 << 1,
|
|
|
+ ImGuiNavHighlightFlags_AlwaysDraw = 1 << 2, // Draw rectangular highlight if (g.NavId == id) _even_ when using the mouse.
|
|
|
+ ImGuiNavHighlightFlags_NoRounding = 1 << 3
|
|
|
+};
|
|
|
+
|
|
|
+enum ImGuiNavDirSourceFlags_
|
|
|
+{
|
|
|
+ ImGuiNavDirSourceFlags_None = 0,
|
|
|
+ ImGuiNavDirSourceFlags_Keyboard = 1 << 0,
|
|
|
+ ImGuiNavDirSourceFlags_PadDPad = 1 << 1,
|
|
|
+ ImGuiNavDirSourceFlags_PadLStick = 1 << 2
|
|
|
+};
|
|
|
+
|
|
|
+enum ImGuiNavMoveFlags_
|
|
|
+{
|
|
|
+ ImGuiNavMoveFlags_None = 0,
|
|
|
+ ImGuiNavMoveFlags_LoopX = 1 << 0, // On failed request, restart from opposite side
|
|
|
+ ImGuiNavMoveFlags_LoopY = 1 << 1,
|
|
|
+ ImGuiNavMoveFlags_WrapX = 1 << 2, // On failed request, request from opposite side one line down (when NavDir==right) or one line up (when NavDir==left)
|
|
|
+ ImGuiNavMoveFlags_WrapY = 1 << 3, // This is not super useful but provided for completeness
|
|
|
+ ImGuiNavMoveFlags_AllowCurrentNavId = 1 << 4, // Allow scoring and considering the current NavId as a move target candidate. This is used when the move source is offset (e.g. pressing PageDown actually needs to send a Up move request, if we are pressing PageDown from the bottom-most item we need to stay in place)
|
|
|
+ ImGuiNavMoveFlags_AlsoScoreVisibleSet = 1 << 5, // Store alternate result in NavMoveResultLocalVisibleSet that only comprise elements that are already fully visible (used by PageUp/PageDown)
|
|
|
+ ImGuiNavMoveFlags_ScrollToEdge = 1 << 6
|
|
|
+};
|
|
|
+
|
|
|
+enum ImGuiNavForward
|
|
|
+{
|
|
|
+ ImGuiNavForward_None,
|
|
|
+ ImGuiNavForward_ForwardQueued,
|
|
|
+ ImGuiNavForward_ForwardActive
|
|
|
+};
|
|
|
+
|
|
|
+enum ImGuiNavLayer
|
|
|
+{
|
|
|
+ ImGuiNavLayer_Main = 0, // Main scrolling layer
|
|
|
+ ImGuiNavLayer_Menu = 1, // Menu layer (access with Alt/ImGuiNavInput_Menu)
|
|
|
+ ImGuiNavLayer_COUNT
|
|
|
+};
|
|
|
+
|
|
|
+struct ImGuiNavItemData
|
|
|
+{
|
|
|
+ ImGuiWindow* Window; // Init,Move // Best candidate window (result->ItemWindow->RootWindowForNav == request->Window)
|
|
|
+ ImGuiID ID; // Init,Move // Best candidate item ID
|
|
|
+ ImGuiID FocusScopeId; // Init,Move // Best candidate focus scope ID
|
|
|
+ ImRect RectRel; // Init,Move // Best candidate bounding box in window relative space
|
|
|
+ float DistBox; // Move // Best candidate box distance to current NavId
|
|
|
+ float DistCenter; // Move // Best candidate center distance to current NavId
|
|
|
+ float DistAxial; // Move // Best candidate axial distance to current NavId
|
|
|
+
|
|
|
+ ImGuiNavItemData() { Clear(); }
|
|
|
+ void Clear() { Window = NULL; ID = FocusScopeId = 0; RectRel = ImRect(); DistBox = DistCenter = DistAxial = FLT_MAX; }
|
|
|
+};
|
|
|
+
|
|
|
//-----------------------------------------------------------------------------
|
|
|
// [SECTION] Columns support
|
|
|
//-----------------------------------------------------------------------------
|