mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Merge branch 'master' into docking
# Conflicts: # backends/imgui_impl_opengl3.cpp # imgui.cpp # imgui.h # imgui_demo.cpp
This commit is contained in:
		@@ -52,7 +52,7 @@ Index of this file:
 | 
			
		||||
#include <limits.h>     // INT_MIN, INT_MAX
 | 
			
		||||
 | 
			
		||||
// Enable SSE intrinsics if available
 | 
			
		||||
#if defined __SSE__ || defined __x86_64__ || defined _M_X64
 | 
			
		||||
#if (defined __SSE__ || defined __x86_64__ || defined _M_X64) && !defined(IMGUI_DISABLE_SSE)
 | 
			
		||||
#define IMGUI_ENABLE_SSE
 | 
			
		||||
#include <immintrin.h>
 | 
			
		||||
#endif
 | 
			
		||||
@@ -820,6 +820,12 @@ enum ImGuiButtonFlagsPrivate_
 | 
			
		||||
    ImGuiButtonFlags_PressedOnDefault_      = ImGuiButtonFlags_PressedOnClickRelease
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Extend ImGuiComboFlags_
 | 
			
		||||
enum ImGuiComboFlagsPrivate_
 | 
			
		||||
{
 | 
			
		||||
    ImGuiComboFlags_CustomPreview           = 1 << 20   // enable BeginComboPreview()
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Extend ImGuiSliderFlags_
 | 
			
		||||
enum ImGuiSliderFlagsPrivate_
 | 
			
		||||
{
 | 
			
		||||
@@ -832,12 +838,13 @@ enum ImGuiSelectableFlagsPrivate_
 | 
			
		||||
{
 | 
			
		||||
    // NB: need to be in sync with last value of ImGuiSelectableFlags_
 | 
			
		||||
    ImGuiSelectableFlags_NoHoldingActiveID      = 1 << 20,
 | 
			
		||||
    ImGuiSelectableFlags_SelectOnClick          = 1 << 21,  // Override button behavior to react on Click (default is Click+Release)
 | 
			
		||||
    ImGuiSelectableFlags_SelectOnRelease        = 1 << 22,  // Override button behavior to react on Release (default is Click+Release)
 | 
			
		||||
    ImGuiSelectableFlags_SpanAvailWidth         = 1 << 23,  // Span all avail width even if we declared less for layout purpose. FIXME: We may be able to remove this (added in 6251d379, 2bcafc86 for menus)
 | 
			
		||||
    ImGuiSelectableFlags_DrawHoveredWhenHeld    = 1 << 24,  // Always show active when held, even is not hovered. This concept could probably be renamed/formalized somehow.
 | 
			
		||||
    ImGuiSelectableFlags_SetNavIdOnHover        = 1 << 25,  // Set Nav/Focus ID on mouse hover (used by MenuItem)
 | 
			
		||||
    ImGuiSelectableFlags_NoPadWithHalfSpacing   = 1 << 26   // Disable padding each side with ItemSpacing * 0.5f
 | 
			
		||||
    ImGuiSelectableFlags_SelectOnNav            = 1 << 21,  // (WIP) Auto-select when moved into. This is not exposed in public API as to handle multi-select and modifiers we will need user to explicitly control focus scope. May be replaced with a BeginSelection() API.
 | 
			
		||||
    ImGuiSelectableFlags_SelectOnClick          = 1 << 22,  // Override button behavior to react on Click (default is Click+Release)
 | 
			
		||||
    ImGuiSelectableFlags_SelectOnRelease        = 1 << 23,  // Override button behavior to react on Release (default is Click+Release)
 | 
			
		||||
    ImGuiSelectableFlags_SpanAvailWidth         = 1 << 24,  // Span all avail width even if we declared less for layout purpose. FIXME: We may be able to remove this (added in 6251d379, 2bcafc86 for menus)
 | 
			
		||||
    ImGuiSelectableFlags_DrawHoveredWhenHeld    = 1 << 25,  // Always show active when held, even is not hovered. This concept could probably be renamed/formalized somehow.
 | 
			
		||||
    ImGuiSelectableFlags_SetNavIdOnHover        = 1 << 26,  // Set Nav/Focus ID on mouse hover (used by MenuItem)
 | 
			
		||||
    ImGuiSelectableFlags_NoPadWithHalfSpacing   = 1 << 27   // Disable padding each side with ItemSpacing * 0.5f
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Extend ImGuiTreeNodeFlags_
 | 
			
		||||
@@ -1008,6 +1015,19 @@ struct ImGuiStyleMod
 | 
			
		||||
    ImGuiStyleMod(ImGuiStyleVar idx, ImVec2 v)  { VarIdx = idx; BackupFloat[0] = v.x; BackupFloat[1] = v.y; }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Storage data for BeginComboPreview()/EndComboPreview()
 | 
			
		||||
struct IMGUI_API ImGuiComboPreviewData
 | 
			
		||||
{
 | 
			
		||||
    ImRect          PreviewRect;
 | 
			
		||||
    ImVec2          BackupCursorPos;
 | 
			
		||||
    ImVec2          BackupCursorMaxPos;
 | 
			
		||||
    ImVec2          BackupCursorPosPrevLine;
 | 
			
		||||
    float           BackupPrevLineTextBaseOffset;
 | 
			
		||||
    ImGuiLayoutType BackupLayout;
 | 
			
		||||
 | 
			
		||||
    ImGuiComboPreviewData() { memset(this, 0, sizeof(*this)); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Stacked storage data for BeginGroup()/EndGroup()
 | 
			
		||||
struct IMGUI_API ImGuiGroupData
 | 
			
		||||
{
 | 
			
		||||
@@ -1729,6 +1749,7 @@ struct ImGuiContext
 | 
			
		||||
    float                   ColorEditLastSat;                   // Backup of last Saturation associated to LastColor[3], so we can restore Saturation in lossy RGB<>HSV round trips
 | 
			
		||||
    float                   ColorEditLastColor[3];
 | 
			
		||||
    ImVec4                  ColorPickerRef;                     // Initial/reference color at the time of opening the color picker.
 | 
			
		||||
    ImGuiComboPreviewData   ComboPreviewData;
 | 
			
		||||
    float                   SliderCurrentAccum;                 // Accumulated slider delta when using navigation controls.
 | 
			
		||||
    bool                    SliderCurrentAccumDirty;            // Has the accumulated slider delta changed since last time we tried to apply it?
 | 
			
		||||
    bool                    DragCurrentAccumDirty;
 | 
			
		||||
@@ -2387,6 +2408,8 @@ struct ImGuiTable
 | 
			
		||||
    ImGuiWindow*                InnerWindow;                // Window holding the table data (== OuterWindow or a child window)
 | 
			
		||||
    ImGuiTextBuffer             ColumnsNames;               // Contiguous buffer holding columns names
 | 
			
		||||
    ImDrawListSplitter*         DrawSplitter;               // Shortcut to TempData->DrawSplitter while in table. Isolate draw commands per columns to avoid switching clip rect constantly
 | 
			
		||||
    ImGuiTableColumnSortSpecs   SortSpecsSingle;
 | 
			
		||||
    ImVector<ImGuiTableColumnSortSpecs> SortSpecsMulti;     // FIXME-OPT: Using a small-vector pattern would be good.
 | 
			
		||||
    ImGuiTableSortSpecs         SortSpecs;                  // Public facing sorts specs, this is what we return in TableGetSortSpecs()
 | 
			
		||||
    ImGuiTableColumnIdx         SortSpecsCount;
 | 
			
		||||
    ImGuiTableColumnIdx         ColumnsEnabledCount;        // Number of enabled columns (<= ColumnsCount)
 | 
			
		||||
@@ -2436,7 +2459,6 @@ struct ImGuiTable
 | 
			
		||||
// Transient data that are only needed between BeginTable() and EndTable(), those buffers are shared (1 per level of stacked table).
 | 
			
		||||
// - Accessing those requires chasing an extra pointer so for very frequently used data we leave them in the main table structure.
 | 
			
		||||
// - We also leave out of this structure data that tend to be particularly useful for debugging/metrics.
 | 
			
		||||
// FIXME-TABLE: more transient data could be stored here: DrawSplitter, incoming RowData?
 | 
			
		||||
struct ImGuiTableTempData
 | 
			
		||||
{
 | 
			
		||||
    int                         TableIndex;                 // Index in g.Tables.Buf[] pool
 | 
			
		||||
@@ -2444,8 +2466,6 @@ struct ImGuiTableTempData
 | 
			
		||||
 | 
			
		||||
    ImVec2                      UserOuterSize;              // outer_size.x passed to BeginTable()
 | 
			
		||||
    ImDrawListSplitter          DrawSplitter;
 | 
			
		||||
    ImGuiTableColumnSortSpecs   SortSpecsSingle;
 | 
			
		||||
    ImVector<ImGuiTableColumnSortSpecs> SortSpecsMulti;     // FIXME-OPT: Using a small-vector pattern would be good.
 | 
			
		||||
 | 
			
		||||
    ImRect                      HostBackupWorkRect;         // Backup of InnerWindow->WorkRect at the end of BeginTable()
 | 
			
		||||
    ImRect                      HostBackupParentWorkRect;   // Backup of InnerWindow->ParentWorkRect at the end of BeginTable()
 | 
			
		||||
@@ -2641,6 +2661,8 @@ namespace ImGui
 | 
			
		||||
 | 
			
		||||
    // Combos
 | 
			
		||||
    IMGUI_API bool          BeginComboPopup(ImGuiID popup_id, const ImRect& bb, ImGuiComboFlags flags);
 | 
			
		||||
    IMGUI_API bool          BeginComboPreview();
 | 
			
		||||
    IMGUI_API void          EndComboPreview();
 | 
			
		||||
 | 
			
		||||
    // Gamepad/Keyboard Navigation
 | 
			
		||||
    IMGUI_API void          NavInitWindow(ImGuiWindow* window, bool force_reinit);
 | 
			
		||||
@@ -2966,11 +2988,7 @@ extern void         ImGuiTestEngineHook_Log(ImGuiContext* ctx, const char* fmt,
 | 
			
		||||
#define IMGUI_TEST_ENGINE_ID_INFO(_ID,_TYPE,_DATA)          if (g.TestEngineHookIdInfo == _ID) ImGuiTestEngineHook_IdInfo(&g, _TYPE, _ID, (const void*)(_DATA));
 | 
			
		||||
#define IMGUI_TEST_ENGINE_ID_INFO2(_ID,_TYPE,_DATA,_DATA2)  if (g.TestEngineHookIdInfo == _ID) ImGuiTestEngineHook_IdInfo(&g, _TYPE, _ID, (const void*)(_DATA), (const void*)(_DATA2));
 | 
			
		||||
#else
 | 
			
		||||
#define IMGUI_TEST_ENGINE_ITEM_ADD(_BB,_ID)                 do { } while (0)
 | 
			
		||||
#define IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS)      do { } while (0)
 | 
			
		||||
#define IMGUI_TEST_ENGINE_LOG(_FMT,...)                     do { } while (0)
 | 
			
		||||
#define IMGUI_TEST_ENGINE_ID_INFO(_ID,_TYPE,_DATA)          do { } while (0)
 | 
			
		||||
#define IMGUI_TEST_ENGINE_ID_INFO2(_ID,_TYPE,_DATA,_DATA2)  do { } while (0)
 | 
			
		||||
#define IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS)      ((void)0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user