|
@@ -691,6 +691,7 @@ struct ImDrawDataBuilder
|
|
|
struct ImGuiNavMoveResult
|
|
|
{
|
|
|
ImGuiID ID; // Best candidate
|
|
|
+ ImGuiID SelectScopeId;// Best candidate window current selectable group ID
|
|
|
ImGuiWindow* Window; // Best candidate window
|
|
|
float DistBox; // Best candidate box distance to current NavId
|
|
|
float DistCenter; // Best candidate center distance to current NavId
|
|
@@ -698,7 +699,7 @@ struct ImGuiNavMoveResult
|
|
|
ImRect RectRel; // Best candidate bounding box in window relative space
|
|
|
|
|
|
ImGuiNavMoveResult() { Clear(); }
|
|
|
- void Clear() { ID = 0; Window = NULL; DistBox = DistCenter = DistAxial = FLT_MAX; RectRel = ImRect(); }
|
|
|
+ void Clear() { ID = SelectScopeId = 0; Window = NULL; DistBox = DistCenter = DistAxial = FLT_MAX; RectRel = ImRect(); }
|
|
|
};
|
|
|
|
|
|
// Storage for SetNexWindow** functions
|
|
@@ -823,8 +824,9 @@ struct ImGuiContext
|
|
|
ImGuiID NavActivatePressedId; // ~~ IsNavInputPressed(ImGuiNavInput_Activate) ? NavId : 0
|
|
|
ImGuiID NavInputId; // ~~ IsNavInputPressed(ImGuiNavInput_Input) ? NavId : 0
|
|
|
ImGuiID NavJustTabbedId; // Just tabbed to this id.
|
|
|
- ImGuiID NavJustMovedToId; // Just navigated to this id (result of a successfully MoveRequest)
|
|
|
- ImGuiID NavNextActivateId; // Set by ActivateItem(), queued until next frame
|
|
|
+ ImGuiID NavJustMovedToId; // Just navigated to this id (result of a successfully MoveRequest).
|
|
|
+ ImGuiID NavJustMovedToSelectScopeId; // Just navigated to this select scope id (result of a successfully MoveRequest).
|
|
|
+ ImGuiID NavNextActivateId; // Set by ActivateItem(), queued until next frame.
|
|
|
ImGuiInputSource NavInputSource; // Keyboard or Gamepad mode? THIS WILL ONLY BE None or NavGamepad or NavKeyboard.
|
|
|
ImRect NavScoringRectScreen; // Rectangle used for scoring, in screen space. Based of window->DC.NavRefRectRel[], modified for directional navigation scoring.
|
|
|
int NavScoringCount; // Metrics for debugging
|
|
@@ -897,6 +899,10 @@ struct ImGuiContext
|
|
|
int TooltipOverrideCount;
|
|
|
ImVector<char> PrivateClipboard; // If no custom clipboard handler is defined
|
|
|
|
|
|
+ // Range-Select/Multi-Select
|
|
|
+ // [This is unused in this branch, but left here to facilitate merging/syncing multiple branches]
|
|
|
+ ImGuiID MultiSelectScopeId;
|
|
|
+
|
|
|
// Platform support
|
|
|
ImVec2 PlatformImePos; // Cursor position request & last passed to the OS Input Method Editor
|
|
|
ImVec2 PlatformImeLastPos;
|
|
@@ -968,7 +974,7 @@ struct ImGuiContext
|
|
|
|
|
|
NavWindow = NULL;
|
|
|
NavId = NavActivateId = NavActivateDownId = NavActivatePressedId = NavInputId = 0;
|
|
|
- NavJustTabbedId = NavJustMovedToId = NavNextActivateId = 0;
|
|
|
+ NavJustTabbedId = NavJustMovedToId = NavJustMovedToSelectScopeId = NavNextActivateId = 0;
|
|
|
NavInputSource = ImGuiInputSource_None;
|
|
|
NavScoringRectScreen = ImRect();
|
|
|
NavScoringCount = 0;
|
|
@@ -1014,6 +1020,9 @@ struct ImGuiContext
|
|
|
DragSpeedDefaultRatio = 1.0f / 100.0f;
|
|
|
ScrollbarClickDeltaToGrabCenter = ImVec2(0.0f, 0.0f);
|
|
|
TooltipOverrideCount = 0;
|
|
|
+
|
|
|
+ MultiSelectScopeId = 0;
|
|
|
+
|
|
|
PlatformImePos = PlatformImeLastPos = ImVec2(FLT_MAX, FLT_MAX);
|
|
|
|
|
|
SettingsLoaded = false;
|
|
@@ -1352,7 +1361,7 @@ namespace ImGui
|
|
|
IMGUI_API bool ItemAdd(const ImRect& bb, ImGuiID id, const ImRect* nav_bb = NULL);
|
|
|
IMGUI_API bool ItemHoverable(const ImRect& bb, ImGuiID id);
|
|
|
IMGUI_API bool IsClippedEx(const ImRect& bb, ImGuiID id, bool clip_even_when_logged);
|
|
|
- IMGUI_API bool FocusableItemRegister(ImGuiWindow* window, ImGuiID id, bool tab_stop = true); // Return true if focus is requested
|
|
|
+ IMGUI_API bool FocusableItemRegister(ImGuiWindow* window, ImGuiID id, bool tab_stop = true); // Return true if focus is requested
|
|
|
IMGUI_API void FocusableItemUnregister(ImGuiWindow* window);
|
|
|
IMGUI_API ImVec2 CalcItemSize(ImVec2 size, float default_x, float default_y);
|
|
|
IMGUI_API float CalcWrapWidthForPos(const ImVec2& pos, float wrap_pos_x);
|