mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-30 04:31:06 +01:00 
			
		
		
		
	Internals: moved ButtonRepeat and AllowKeyboardFocus bools/stacks to a generic ItemFlags stack. Merged from Navigation branch.
This commit is contained in:
		| @@ -48,6 +48,7 @@ typedef int ImGuiLayoutType;      // enum ImGuiLayoutType_ | ||||
| typedef int ImGuiButtonFlags;     // enum ImGuiButtonFlags_ | ||||
| typedef int ImGuiTreeNodeFlags;   // enum ImGuiTreeNodeFlags_ | ||||
| typedef int ImGuiSliderFlags;     // enum ImGuiSliderFlags_ | ||||
| typedef int ImGuiItemFlags;       // enum ImGuiItemFlags_ | ||||
|  | ||||
| //------------------------------------------------------------------------- | ||||
| // STB libraries | ||||
| @@ -564,6 +565,14 @@ struct ImGuiContext | ||||
|     } | ||||
| }; | ||||
|  | ||||
| // Transient per-window flags, reset at the beginning of the frame. For child window, inherited from parent on first Begin(). | ||||
| enum ImGuiItemFlags_ | ||||
| { | ||||
|     ImGuiItemFlags_AllowKeyboardFocus       = 1 << 0,  // default: true | ||||
|     ImGuiItemFlags_ButtonRepeat             = 1 << 1,  // default: false    // Button() will return true multiple times based on io.KeyRepeatDelay and io.KeyRepeatRate settings. | ||||
|     ImGuiItemFlags_Default_                 = ImGuiItemFlags_AllowKeyboardFocus | ||||
| }; | ||||
|  | ||||
| // Transient per-window data, reset at the beginning of the frame | ||||
| // FIXME: That's theory, in practice the delimitation between ImGuiWindow and ImGuiDrawContext is quite tenuous and could be reconsidered. | ||||
| struct IMGUI_API ImGuiDrawContext | ||||
| @@ -589,14 +598,12 @@ struct IMGUI_API ImGuiDrawContext | ||||
|     ImGuiLayoutType         LayoutType; | ||||
|  | ||||
|     // We store the current settings outside of the vectors to increase memory locality (reduce cache misses). The vectors are rarely modified. Also it allows us to not heap allocate for short-lived windows which are not using those settings. | ||||
|     ImGuiItemFlags          ItemFlags;              // == ItemFlagsStack.back() [empty == ImGuiItemFlags_Default] | ||||
|     float                   ItemWidth;              // == ItemWidthStack.back(). 0.0: default, >0.0: width in pixels, <0.0: align xx pixels to the right of window | ||||
|     float                   TextWrapPos;            // == TextWrapPosStack.back() [empty == -1.0f] | ||||
|     bool                    AllowKeyboardFocus;     // == AllowKeyboardFocusStack.back() [empty == true] | ||||
|     bool                    ButtonRepeat;           // == ButtonRepeatStack.back() [empty == false] | ||||
|     ImVector<ImGuiItemFlags>ItemFlagsStack; | ||||
|     ImVector<float>         ItemWidthStack; | ||||
|     ImVector<float>         TextWrapPosStack; | ||||
|     ImVector<bool>          AllowKeyboardFocusStack; | ||||
|     ImVector<bool>          ButtonRepeatStack; | ||||
|     ImVector<ImGuiGroupData>GroupStack; | ||||
|     int                     StackSizesBackup[6];    // Store size of various stacks for asserting | ||||
|  | ||||
| @@ -630,8 +637,7 @@ struct IMGUI_API ImGuiDrawContext | ||||
|         StateStorage = NULL; | ||||
|         LayoutType = ImGuiLayoutType_Vertical; | ||||
|         ItemWidth = 0.0f; | ||||
|         ButtonRepeat = false; | ||||
|         AllowKeyboardFocus = true; | ||||
|         ItemFlags = ImGuiItemFlags_Default_; | ||||
|         TextWrapPos = -1.0f; | ||||
|         memset(StackSizesBackup, 0, sizeof(StackSizesBackup)); | ||||
|  | ||||
| @@ -761,6 +767,8 @@ namespace ImGui | ||||
|     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); | ||||
|     IMGUI_API void          PushItemFlag(ImGuiItemFlags option, bool enabled); | ||||
|     IMGUI_API void          PopItemFlag(); | ||||
|  | ||||
|     IMGUI_API void          OpenPopupEx(ImGuiID id, bool reopen_existing); | ||||
|     IMGUI_API bool          IsPopupOpen(ImGuiID id); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user