mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Merge branch 'master' into docking
# Conflicts: # backends/imgui_impl_glfw.cpp # backends/imgui_impl_glfw.h # backends/imgui_impl_osx.h # backends/imgui_impl_osx.mm # backends/imgui_impl_sdl.cpp # backends/imgui_impl_sdl.h # backends/imgui_impl_win32.cpp # backends/imgui_impl_win32.h # imgui.cpp
This commit is contained in:
		@@ -555,6 +555,7 @@ inline void     ImBitArraySetBitRange(ImU32* arr, int n, int n2) // Works on ran
 | 
			
		||||
template<int BITCOUNT>
 | 
			
		||||
struct IMGUI_API ImBitArray
 | 
			
		||||
{
 | 
			
		||||
    static const int Size = BITCOUNT;
 | 
			
		||||
    ImU32           Storage[(BITCOUNT + 31) >> 5];
 | 
			
		||||
    ImBitArray()                                { ClearAllBits(); }
 | 
			
		||||
    void            ClearAllBits()              { memset(Storage, 0, sizeof(Storage)); }
 | 
			
		||||
@@ -564,6 +565,8 @@ struct IMGUI_API ImBitArray
 | 
			
		||||
    void            ClearBit(int n)             { IM_ASSERT(n < BITCOUNT); ImBitArrayClearBit(Storage, n); }
 | 
			
		||||
    void            SetBitRange(int n, int n2)  { ImBitArraySetBitRange(Storage, n, n2); } // Works on range [n..n2)
 | 
			
		||||
};
 | 
			
		||||
template<int BITCOUNT>
 | 
			
		||||
const int ImBitArray<BITCOUNT>::Size;
 | 
			
		||||
 | 
			
		||||
// Helper: ImBitVector
 | 
			
		||||
// Store 1-bit per value.
 | 
			
		||||
@@ -1731,7 +1734,7 @@ struct ImGuiContext
 | 
			
		||||
    bool                    ActiveIdUsingMouseWheel;            // Active widget will want to read mouse wheel. Blocks scrolling the underlying window.
 | 
			
		||||
    ImU32                   ActiveIdUsingNavDirMask;            // Active widget will want to read those nav move requests (e.g. can activate a button and move away from it)
 | 
			
		||||
    ImU32                   ActiveIdUsingNavInputMask;          // Active widget will want to read those nav inputs.
 | 
			
		||||
    ImU64                   ActiveIdUsingKeyInputMask;          // Active widget will want to read those key inputs. When we grow the ImGuiKey enum we'll need to either to order the enum to make useful keys come first, either redesign this into e.g. a small array.
 | 
			
		||||
    ImBitArray<ImGuiKey_NamedKey_COUNT> ActiveIdUsingKeyInputMask; // Active widget will want to read those key inputs. When we grow the ImGuiKey enum we'll need to either to order the enum to make useful keys come first, either redesign this into e.g. a small array.
 | 
			
		||||
    ImVec2                  ActiveIdClickOffset;                // Clicked offset from upper-left corner, if applicable (currently only set by ButtonBehavior)
 | 
			
		||||
    ImGuiWindow*            ActiveIdWindow;
 | 
			
		||||
    ImGuiInputSource        ActiveIdSource;                     // Activating with mouse or nav (gamepad/keyboard)
 | 
			
		||||
@@ -1981,7 +1984,7 @@ struct ImGuiContext
 | 
			
		||||
        ActiveIdUsingMouseWheel = false;
 | 
			
		||||
        ActiveIdUsingNavDirMask = 0x00;
 | 
			
		||||
        ActiveIdUsingNavInputMask = 0x00;
 | 
			
		||||
        ActiveIdUsingKeyInputMask = 0x00;
 | 
			
		||||
        ActiveIdUsingKeyInputMask.ClearAllBits();
 | 
			
		||||
        ActiveIdClickOffset = ImVec2(-1, -1);
 | 
			
		||||
        ActiveIdWindow = NULL;
 | 
			
		||||
        ActiveIdSource = ImGuiInputSource_None;
 | 
			
		||||
@@ -2824,16 +2827,22 @@ namespace ImGui
 | 
			
		||||
 | 
			
		||||
    // Inputs
 | 
			
		||||
    // FIXME: Eventually we should aim to move e.g. IsActiveIdUsingKey() into IsKeyXXX functions.
 | 
			
		||||
    inline bool             IsNamedKey(ImGuiKey key)                                    { return key >= ImGuiKey_NamedKey_BEGIN && key < ImGuiKey_NamedKey_END; }
 | 
			
		||||
    inline bool             IsLegacyKey(ImGuiKey key)                                   { return key >= ImGuiKey_LegacyNativeKey_BEGIN && key < ImGuiKey_LegacyNativeKey_END; }
 | 
			
		||||
    IMGUI_API const ImGuiKeyData* GetKeyData(ImGuiKey key);
 | 
			
		||||
    IMGUI_API void          SetItemUsingMouseWheel();
 | 
			
		||||
    IMGUI_API void          SetActiveIdUsingNavAndKeys();
 | 
			
		||||
    inline bool             IsActiveIdUsingNavDir(ImGuiDir dir)                         { ImGuiContext& g = *GImGui; return (g.ActiveIdUsingNavDirMask & (1 << dir)) != 0; }
 | 
			
		||||
    inline bool             IsActiveIdUsingNavInput(ImGuiNavInput input)                { ImGuiContext& g = *GImGui; return (g.ActiveIdUsingNavInputMask & (1 << input)) != 0; }
 | 
			
		||||
    inline bool             IsActiveIdUsingKey(ImGuiKey key)                            { ImGuiContext& g = *GImGui; IM_ASSERT(key < 64); return (g.ActiveIdUsingKeyInputMask & ((ImU64)1 << key)) != 0; }
 | 
			
		||||
    inline bool             IsActiveIdUsingKey(ImGuiKey key)                            { IM_ASSERT(IsNamedKey(key)); ImGuiContext& g = *GImGui; return g.ActiveIdUsingKeyInputMask.TestBit(key - ImGuiKey_NamedKey_BEGIN); }
 | 
			
		||||
    inline void             SetActiveIdUsingKey(ImGuiKey key)                           { IM_ASSERT(IsNamedKey(key)); ImGuiContext& g = *GImGui; g.ActiveIdUsingKeyInputMask.SetBit(key - ImGuiKey_NamedKey_BEGIN); }
 | 
			
		||||
    IMGUI_API bool          IsMouseDragPastThreshold(ImGuiMouseButton button, float lock_threshold = -1.0f);
 | 
			
		||||
    inline bool             IsKeyPressedMap(ImGuiKey key, bool repeat = true)           { ImGuiContext& g = *GImGui; const int key_index = g.IO.KeyMap[key]; return (key_index >= 0) ? IsKeyPressed(key_index, repeat) : false; }
 | 
			
		||||
    inline bool             IsNavInputDown(ImGuiNavInput n)                             { ImGuiContext& g = *GImGui; return g.IO.NavInputs[n] > 0.0f; }
 | 
			
		||||
    inline bool             IsNavInputTest(ImGuiNavInput n, ImGuiInputReadMode rm)      { return (GetNavInputAmount(n, rm) > 0.0f); }
 | 
			
		||||
    IMGUI_API ImGuiKeyModFlags GetMergedKeyModFlags();
 | 
			
		||||
#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
 | 
			
		||||
    inline bool             IsKeyPressedMap(ImGuiKey key, bool repeat = true)           { IM_ASSERT(IsNamedKey(key)); return IsKeyPressed(key, repeat); }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // Docking
 | 
			
		||||
    // (some functions are only declared in imgui.cpp, see Docking section)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user