mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Merge branch 'master' into docking
# Conflicts: # imgui.cpp # imgui_internal.h # imgui_widgets.cpp
This commit is contained in:
		@@ -9,7 +9,8 @@
 | 
			
		||||
//  [ ] Renderer: The renderer is suboptimal as we need to unindex our buffers and convert vertices manually.
 | 
			
		||||
//  [ ] Platform: Missing gamepad support.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,8 @@
 | 
			
		||||
//  [ ] Renderer: The renderer is suboptimal as we need to unindex our buffers and convert vertices manually.
 | 
			
		||||
//  [ ] Platform: Missing gamepad support.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,9 +11,10 @@
 | 
			
		||||
//  - FIXME: On-screen keyboard currently needs to be enabled by the application (see examples/ and issue #3446)
 | 
			
		||||
//  - FIXME: Unicode character inputs needs to be passed by Dear ImGui by the application (see examples/ and issue #3446)
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See main.cpp for an example of using this.
 | 
			
		||||
// If you are new to dear imgui, read examples/README.txt and read the documentation at the top of imgui.cpp.
 | 
			
		||||
// https://github.com/ocornut/imgui
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
// CHANGELOG
 | 
			
		||||
// (minor and older changes stripped away, please see git history for details)
 | 
			
		||||
 
 | 
			
		||||
@@ -11,9 +11,10 @@
 | 
			
		||||
//  - FIXME: On-screen keyboard currently needs to be enabled by the application (see examples/ and issue #3446)
 | 
			
		||||
//  - FIXME: Unicode character inputs needs to be passed by Dear ImGui by the application (see examples/ and issue #3446)
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See main.cpp for an example of using this.
 | 
			
		||||
// If you are new to dear imgui, read examples/README.txt and read the documentation at the top of imgui.cpp.
 | 
			
		||||
// https://github.com/ocornut/imgui
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
//  [X] Renderer: Multi-viewport support. Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
//  [X] Renderer: Support for large meshes (64k+ vertices) with 16-bit indices.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
//  [X] Renderer: Multi-viewport support. Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
//  [X] Renderer: Support for large meshes (64k+ vertices) with 16-bit indices.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
//  [X] Renderer: Multi-viewport support. Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
//  [X] Renderer: Support for large meshes (64k+ vertices) with 16-bit indices.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
//  [X] Renderer: Multi-viewport support. Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
//  [X] Renderer: Support for large meshes (64k+ vertices) with 16-bit indices.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,8 @@
 | 
			
		||||
// This is because we need ImTextureID to carry a 64-bit value and by default ImTextureID is defined as void*.
 | 
			
		||||
// This define is set in the example .vcxproj file and need to be replicated in your app or by adding it to your imconfig.h file.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,8 @@
 | 
			
		||||
// This is because we need ImTextureID to carry a 64-bit value and by default ImTextureID is defined as void*.
 | 
			
		||||
// This define is set in the example .vcxproj file and need to be replicated in your app or by adding it to your imconfig.h file.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
//  [X] Renderer: Multi-viewport support. Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
//  [X] Renderer: Support for large meshes (64k+ vertices) with 16-bit indices.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
//  [X] Renderer: Multi-viewport support. Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
//  [X] Renderer: Support for large meshes (64k+ vertices) with 16-bit indices.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,8 @@
 | 
			
		||||
// Issues:
 | 
			
		||||
//  [ ] Platform: Multi-viewport support: ParentViewportID not honored, and so io.ConfigViewportsNoDefaultParent has no effect (minor).
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,8 @@
 | 
			
		||||
// Issues:
 | 
			
		||||
//  [ ] Platform: Multi-viewport support: ParentViewportID not honored, and so io.ConfigViewportsNoDefaultParent has no effect (minor).
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,8 @@
 | 
			
		||||
//  [ ] Platform: Missing clipboard support (not supported by Glut).
 | 
			
		||||
//  [ ] Platform: Missing gamepad support.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,8 @@
 | 
			
		||||
//  [ ] Platform: Missing clipboard support (not supported by Glut).
 | 
			
		||||
//  [ ] Platform: Missing gamepad support.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
// Missing features:
 | 
			
		||||
//  [ ] Renderer: Clipping rectangles are not honored.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,8 @@
 | 
			
		||||
// Implemented features:
 | 
			
		||||
//  [X] Renderer: User texture binding. Use 'CIwTexture*' as ImTextureID. Read the FAQ about ImTextureID!
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,8 @@
 | 
			
		||||
// Missing features:
 | 
			
		||||
//  [ ] Renderer: Multi-viewport / platform windows.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,8 @@
 | 
			
		||||
// Missing features:
 | 
			
		||||
//  [ ] Renderer: Multi-viewport / platform windows.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,8 @@
 | 
			
		||||
//  [X] Renderer: User texture binding. Use 'GLuint' OpenGL texture identifier as void*/ImTextureID. Read the FAQ about ImTextureID!
 | 
			
		||||
//  [X] Renderer: Multi-viewport support. Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,8 @@
 | 
			
		||||
//  [X] Renderer: User texture binding. Use 'GLuint' OpenGL texture identifier as void*/ImTextureID. Read the FAQ about ImTextureID!
 | 
			
		||||
//  [X] Renderer: Multi-viewport support. Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,8 @@
 | 
			
		||||
//  [X] Renderer: Multi-viewport support. Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
//  [x] Renderer: Desktop GL only: Support for large meshes (64k+ vertices) with 16-bit indices.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,8 @@
 | 
			
		||||
//  [X] Renderer: Multi-viewport support. Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
//  [x] Renderer: Desktop GL only: Support for large meshes (64k+ vertices) with 16-bit indices.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,8 @@
 | 
			
		||||
//  [ ] Platform: Keys are all generally very broken. Best using [event keycode] and not [event characters]..
 | 
			
		||||
//  [ ] Platform: Multi-viewport / platform windows.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,8 @@
 | 
			
		||||
//  [ ] Platform: Keys are all generally very broken. Best using [event keycode] and not [event characters]..
 | 
			
		||||
//  [ ] Platform: Multi-viewport / platform windows.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,8 @@
 | 
			
		||||
//  [ ] Platform: SDL2 handling of IME under Windows appears to be broken and it explicitly disable the regular Windows IME. You can restore Windows IME by compiling SDL with SDL_DISABLE_WINDOWS_IME.
 | 
			
		||||
//  [ ] Platform: Multi-viewport + Minimized windows seems to break mouse wheel events (at least under Windows).
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,8 @@
 | 
			
		||||
//  [ ] Platform: SDL2 handling of IME under Windows appears to be broken and it explicitly disable the regular Windows IME. You can restore Windows IME by compiling SDL with SDL_DISABLE_WINDOWS_IME.
 | 
			
		||||
//  [ ] Platform: Multi-viewport + Minimized windows seems to break mouse wheel events (at least under Windows).
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,8 @@
 | 
			
		||||
// Missing features:
 | 
			
		||||
//  [ ] Renderer: User texture binding. Changes of ImTextureID aren't supported by this backend! See https://github.com/ocornut/imgui/pull/914
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,8 @@
 | 
			
		||||
//  [ ] Platform: Multi-viewport / platform windows.
 | 
			
		||||
//  [ ] Renderer: User texture binding. Changes of ImTextureID aren't supported by this backend! See https://github.com/ocornut/imgui/pull/914
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
//  [X] Renderer: User texture binding. Use 'WGPUTextureView' as ImTextureID. Read the FAQ about ImTextureID!
 | 
			
		||||
//  [X] Renderer: Support for large meshes (64k+ vertices) with 16-bit indices.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
//  [X] Renderer: User texture binding. Use 'WGPUTextureView' as ImTextureID. Read the FAQ about ImTextureID!
 | 
			
		||||
//  [X] Renderer: Support for large meshes (64k+ vertices) with 16-bit indices.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,8 @@
 | 
			
		||||
//  [X] Platform: Gamepad support. Enabled with 'io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad'.
 | 
			
		||||
//  [X] Platform: Multi-viewport support (multiple windows). Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,8 @@
 | 
			
		||||
//  [X] Platform: Gamepad support. Enabled with 'io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad'.
 | 
			
		||||
//  [X] Platform: Multi-viewport support (multiple windows). Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
 | 
			
		||||
 | 
			
		||||
// You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 | 
			
		||||
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 
 | 
			
		||||
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 | 
			
		||||
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
 | 
			
		||||
// Read online: https://github.com/ocornut/imgui/tree/master/docs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -104,6 +104,8 @@ Other changes:
 | 
			
		||||
-----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
Other Changes:
 | 
			
		||||
- TabBar: Fixed using more than 32 KB-worth of tab names. (#4176)
 | 
			
		||||
- Fixed printf-style format checks on non-MinGW flavors. (#4183, #3592)
 | 
			
		||||
- Demo: Fixed requirement in 1.83 to link with imgui_demo.cpp if IMGUI_DISABLE_METRICS_WINDOW is not set. (#4171)
 | 
			
		||||
  Normally the right way to disable compiling the demo is to set IMGUI_DISABLE_DEMO_WINDOWS, but we want to avoid
 | 
			
		||||
  implying that the file is required.
 | 
			
		||||
 
 | 
			
		||||
@@ -199,7 +199,7 @@ Ongoing Dear ImGui development is currently financially supported by users and p
 | 
			
		||||
- [Blizzard](https://careers.blizzard.com/en-us/openings/engineering/all/all/all/1), [Google](https://github.com/google/filament), [Nvidia](https://developer.nvidia.com/nvidia-omniverse)
 | 
			
		||||
 | 
			
		||||
*Double-chocolate and Salty caramel sponsors*
 | 
			
		||||
- [Activision](https://careers.activision.com/c/programmingsoftware-engineering-jobs), [Aras Pranckevičius](https://aras-p.info), [Arkane Studios](https://www.arkane-studios.com), [Framefield](http://framefield.com), [Grinding Gear Games](https://www.grindinggear.com), [Kylotonn](https://www.kylotonn.com), [Next Level Games](https://www.nextlevelgames.com), [RAD Game Tools](http://www.radgametools.com/), [O-Net Communications (USA)](http://en.o-netcom.com), [Supercell](https://supercell.com), [Ubisoft](https://montreal.ubisoft.com/en/ubisoft-sponsors-user-interface-library-for-c-dear-imgui)
 | 
			
		||||
- [Activision](https://careers.activision.com/c/programmingsoftware-engineering-jobs), [Adobe](https://www.adobe.com/products/medium.html), [Aras Pranckevičius](https://aras-p.info), [Arkane Studios](https://www.arkane-studios.com), [Framefield](http://framefield.com), [Grinding Gear Games](https://www.grindinggear.com), [Kylotonn](https://www.kylotonn.com), [Next Level Games](https://www.nextlevelgames.com), [RAD Game Tools](http://www.radgametools.com/), [O-Net Communications (USA)](http://en.o-netcom.com), [Supercell](https://supercell.com), [Ubisoft](https://montreal.ubisoft.com/en/ubisoft-sponsors-user-interface-library-for-c-dear-imgui)
 | 
			
		||||
 | 
			
		||||
Please see [detailed list of Dear ImGui supporters](https://github.com/ocornut/imgui/wiki/Sponsors) for past sponsors.
 | 
			
		||||
From November 2014 to December 2019, ongoing development has also been financially supported by its users on Patreon and through individual donations.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										39
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								imgui.cpp
									
									
									
									
									
								
							@@ -9221,7 +9221,7 @@ ImVec2 ImGui::FindBestWindowPosForPopupEx(const ImVec2& ref_pos, const ImVec2& s
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Note that this is used for popups, which can overlap the non work-area of individual viewports.
 | 
			
		||||
ImRect ImGui::GetWindowAllowedExtentRect(ImGuiWindow* window)
 | 
			
		||||
ImRect ImGui::GetPopupAllowedExtentRect(ImGuiWindow* window)
 | 
			
		||||
{
 | 
			
		||||
    ImGuiContext& g = *GImGui;
 | 
			
		||||
    ImRect r_screen;
 | 
			
		||||
@@ -9246,7 +9246,7 @@ ImVec2 ImGui::FindBestWindowPosForPopup(ImGuiWindow* window)
 | 
			
		||||
{
 | 
			
		||||
    ImGuiContext& g = *GImGui;
 | 
			
		||||
 | 
			
		||||
    ImRect r_outer = GetWindowAllowedExtentRect(window);
 | 
			
		||||
    ImRect r_outer = GetPopupAllowedExtentRect(window);
 | 
			
		||||
    if (window->Flags & ImGuiWindowFlags_ChildMenu)
 | 
			
		||||
    {
 | 
			
		||||
        // Child menus typically request _any_ position within the parent menu item, and then we move the new menu outside the parent bounds.
 | 
			
		||||
@@ -16249,10 +16249,10 @@ void ImGui::ShowMetricsWindow(bool* p_open)
 | 
			
		||||
        cfg->ShowTablesRects |= Combo("##show_table_rects_type", &cfg->ShowTablesRectsType, trt_rects_names, TRT_Count, TRT_Count);
 | 
			
		||||
        if (cfg->ShowTablesRects && g.NavWindow != NULL)
 | 
			
		||||
        {
 | 
			
		||||
            for (int table_n = 0; table_n < g.Tables.GetSize(); table_n++)
 | 
			
		||||
            for (int table_n = 0; table_n < g.Tables.GetMapSize(); table_n++)
 | 
			
		||||
            {
 | 
			
		||||
                ImGuiTable* table = g.Tables.GetByIndex(table_n);
 | 
			
		||||
                if (table->LastFrameActive < g.FrameCount - 1 || (table->OuterWindow != g.NavWindow && table->InnerWindow != g.NavWindow))
 | 
			
		||||
                ImGuiTable* table = g.Tables.TryGetMapData(table_n);
 | 
			
		||||
                if (table == NULL || table->LastFrameActive < g.FrameCount - 1 || (table->OuterWindow != g.NavWindow && table->InnerWindow != g.NavWindow))
 | 
			
		||||
                    continue;
 | 
			
		||||
 | 
			
		||||
                BulletText("Table 0x%08X (%d columns, in '%s')", table->ID, table->ColumnsCount, table->OuterWindow->Name);
 | 
			
		||||
@@ -16369,23 +16369,24 @@ void ImGui::ShowMetricsWindow(bool* p_open)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Details for TabBars
 | 
			
		||||
    if (TreeNode("TabBars", "Tab Bars (%d)", g.TabBars.GetSize()))
 | 
			
		||||
    if (TreeNode("TabBars", "Tab Bars (%d)", g.TabBars.GetAliveCount()))
 | 
			
		||||
    {
 | 
			
		||||
        for (int n = 0; n < g.TabBars.GetSize(); n++)
 | 
			
		||||
        {
 | 
			
		||||
            ImGuiTabBar* tab_bar = g.TabBars.GetByIndex(n);
 | 
			
		||||
            PushID(tab_bar);
 | 
			
		||||
            DebugNodeTabBar(tab_bar, "TabBar");
 | 
			
		||||
            PopID();
 | 
			
		||||
        }
 | 
			
		||||
        for (int n = 0; n < g.TabBars.GetMapSize(); n++)
 | 
			
		||||
            if (ImGuiTabBar* tab_bar = g.TabBars.TryGetMapData(n))
 | 
			
		||||
            {
 | 
			
		||||
                PushID(tab_bar);
 | 
			
		||||
                DebugNodeTabBar(tab_bar, "TabBar");
 | 
			
		||||
                PopID();
 | 
			
		||||
            }
 | 
			
		||||
        TreePop();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Details for Tables
 | 
			
		||||
    if (TreeNode("Tables", "Tables (%d)", g.Tables.GetSize()))
 | 
			
		||||
    if (TreeNode("Tables", "Tables (%d)", g.Tables.GetAliveCount()))
 | 
			
		||||
    {
 | 
			
		||||
        for (int n = 0; n < g.Tables.GetSize(); n++)
 | 
			
		||||
            DebugNodeTable(g.Tables.GetByIndex(n));
 | 
			
		||||
        for (int n = 0; n < g.Tables.GetMapSize(); n++)
 | 
			
		||||
            if (ImGuiTable* table = g.Tables.TryGetMapData(n))
 | 
			
		||||
                DebugNodeTable(table);
 | 
			
		||||
        TreePop();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -16555,10 +16556,10 @@ void ImGui::ShowMetricsWindow(bool* p_open)
 | 
			
		||||
    // Overlay: Display Tables Rectangles
 | 
			
		||||
    if (cfg->ShowTablesRects)
 | 
			
		||||
    {
 | 
			
		||||
        for (int table_n = 0; table_n < g.Tables.GetSize(); table_n++)
 | 
			
		||||
        for (int table_n = 0; table_n < g.Tables.GetMapSize(); table_n++)
 | 
			
		||||
        {
 | 
			
		||||
            ImGuiTable* table = g.Tables.GetByIndex(table_n);
 | 
			
		||||
            if (table->LastFrameActive < g.FrameCount - 1)
 | 
			
		||||
            ImGuiTable* table = g.Tables.TryGetMapData(table_n);
 | 
			
		||||
            if (table == NULL || table->LastFrameActive < g.FrameCount - 1)
 | 
			
		||||
                continue;
 | 
			
		||||
            ImDrawList* draw_list = GetForegroundDrawList(table->OuterWindow);
 | 
			
		||||
            if (cfg->ShowTablesRectsType >= TRT_ColumnsRect)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								imgui.h
									
									
									
									
									
								
							@@ -62,7 +62,7 @@ Index of this file:
 | 
			
		||||
// Version
 | 
			
		||||
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals. Work in progress versions typically starts at XYY99 then bounce up to XYY00, XYY01 etc. when release tagging happens)
 | 
			
		||||
#define IMGUI_VERSION               "1.84 WIP"
 | 
			
		||||
#define IMGUI_VERSION_NUM           18302
 | 
			
		||||
#define IMGUI_VERSION_NUM           18304
 | 
			
		||||
#define IMGUI_CHECKVERSION()        ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx))
 | 
			
		||||
#define IMGUI_HAS_TABLE
 | 
			
		||||
#define IMGUI_HAS_VIEWPORT          // Viewport WIP branch
 | 
			
		||||
@@ -92,12 +92,12 @@ Index of this file:
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Helper Macros - IM_FMTARGS, IM_FMTLIST: Apply printf-style warnings to our formatting functions.
 | 
			
		||||
#if !defined(IMGUI_USE_STB_SPRINTF) && defined(__clang__)
 | 
			
		||||
#define IM_FMTARGS(FMT)             __attribute__((format(printf, FMT, FMT+1)))
 | 
			
		||||
#define IM_FMTLIST(FMT)             __attribute__((format(printf, FMT, 0)))
 | 
			
		||||
#elif !defined(IMGUI_USE_STB_SPRINTF) && defined(__GNUC__) && defined(__MINGW32__)
 | 
			
		||||
#if !defined(IMGUI_USE_STB_SPRINTF) && defined(__MINGW32__)
 | 
			
		||||
#define IM_FMTARGS(FMT)             __attribute__((format(gnu_printf, FMT, FMT+1)))
 | 
			
		||||
#define IM_FMTLIST(FMT)             __attribute__((format(gnu_printf, FMT, 0)))
 | 
			
		||||
#elif !defined(IMGUI_USE_STB_SPRINTF) && (defined(__clang__) || defined(__GNUC__))
 | 
			
		||||
#define IM_FMTARGS(FMT)             __attribute__((format(printf, FMT, FMT+1)))
 | 
			
		||||
#define IM_FMTLIST(FMT)             __attribute__((format(printf, FMT, 0)))
 | 
			
		||||
#else
 | 
			
		||||
#define IM_FMTARGS(FMT)
 | 
			
		||||
#define IM_FMTLIST(FMT)
 | 
			
		||||
 
 | 
			
		||||
@@ -624,20 +624,30 @@ struct IMGUI_API ImPool
 | 
			
		||||
    ImVector<T>     Buf;        // Contiguous data
 | 
			
		||||
    ImGuiStorage    Map;        // ID->Index
 | 
			
		||||
    ImPoolIdx       FreeIdx;    // Next free idx to use
 | 
			
		||||
    ImPoolIdx       AliveCount; // Number of active/alive items (for display purpose)
 | 
			
		||||
 | 
			
		||||
    ImPool()    { FreeIdx = 0; }
 | 
			
		||||
    ImPool()    { FreeIdx = AliveCount = 0; }
 | 
			
		||||
    ~ImPool()   { Clear(); }
 | 
			
		||||
    T*          GetByKey(ImGuiID key)               { int idx = Map.GetInt(key, -1); return (idx != -1) ? &Buf[idx] : NULL; }
 | 
			
		||||
    T*          GetByIndex(ImPoolIdx n)             { return &Buf[n]; }
 | 
			
		||||
    ImPoolIdx   GetIndex(const T* p) const          { IM_ASSERT(p >= Buf.Data && p < Buf.Data + Buf.Size); return (ImPoolIdx)(p - Buf.Data); }
 | 
			
		||||
    T*          GetOrAddByKey(ImGuiID key)          { int* p_idx = Map.GetIntRef(key, -1); if (*p_idx != -1) return &Buf[*p_idx]; *p_idx = FreeIdx; return Add(); }
 | 
			
		||||
    bool        Contains(const T* p) const          { return (p >= Buf.Data && p < Buf.Data + Buf.Size); }
 | 
			
		||||
    void        Clear()                             { for (int n = 0; n < Map.Data.Size; n++) { int idx = Map.Data[n].val_i; if (idx != -1) Buf[idx].~T(); } Map.Clear(); Buf.clear(); FreeIdx = 0; }
 | 
			
		||||
    T*          Add()                               { int idx = FreeIdx; if (idx == Buf.Size) { Buf.resize(Buf.Size + 1); FreeIdx++; } else { FreeIdx = *(int*)&Buf[idx]; } IM_PLACEMENT_NEW(&Buf[idx]) T(); return &Buf[idx]; }
 | 
			
		||||
    void        Clear()                             { for (int n = 0; n < Map.Data.Size; n++) { int idx = Map.Data[n].val_i; if (idx != -1) Buf[idx].~T(); } Map.Clear(); Buf.clear(); FreeIdx = AliveCount = 0; }
 | 
			
		||||
    T*          Add()                               { int idx = FreeIdx; if (idx == Buf.Size) { Buf.resize(Buf.Size + 1); FreeIdx++; } else { FreeIdx = *(int*)&Buf[idx]; } IM_PLACEMENT_NEW(&Buf[idx]) T(); AliveCount++; return &Buf[idx]; }
 | 
			
		||||
    void        Remove(ImGuiID key, const T* p)     { Remove(key, GetIndex(p)); }
 | 
			
		||||
    void        Remove(ImGuiID key, ImPoolIdx idx)  { Buf[idx].~T(); *(int*)&Buf[idx] = FreeIdx; FreeIdx = idx; Map.SetInt(key, -1); }
 | 
			
		||||
    void        Remove(ImGuiID key, ImPoolIdx idx)  { Buf[idx].~T(); *(int*)&Buf[idx] = FreeIdx; FreeIdx = idx; Map.SetInt(key, -1); AliveCount--; }
 | 
			
		||||
    void        Reserve(int capacity)               { Buf.reserve(capacity); Map.Data.reserve(capacity); }
 | 
			
		||||
    int         GetSize() const                     { return Buf.Size; }
 | 
			
		||||
 | 
			
		||||
    // To iterate a ImPool: for (int n = 0; n < pool.GetMapSize(); n++) if (T* t = pool.TryGetMapData(n)) { ... }
 | 
			
		||||
    // Can be avoided if you know .Remove() has never been called on the pool, or AliveCount == GetMapSize()
 | 
			
		||||
    int         GetAliveCount() const               { return AliveCount; }      // Number of active/alive items in the pool (for display purpose)
 | 
			
		||||
    int         GetBufSize() const                  { return Buf.Size; }
 | 
			
		||||
    int         GetMapSize() const                  { return Map.Data.Size; }   // It is the map we need iterate to find valid items, since we don't have "alive" storage anywhere
 | 
			
		||||
    T*          TryGetMapData(ImPoolIdx n)          { int idx = Map.Data[n].val_i; if (idx == -1) return NULL; return GetByIndex(idx); }
 | 
			
		||||
#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
 | 
			
		||||
    int         GetSize()                           { return GetMapSize(); } // For ImPlot: should use GetMapSize() from (IMGUI_VERSION_NUM >= 18304)
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Helper: ImChunkStream<>
 | 
			
		||||
@@ -2168,7 +2178,7 @@ enum ImGuiTabItemFlagsPrivate_
 | 
			
		||||
    ImGuiTabItemFlags_Preview                   = 1 << 23   // [Docking] Display tab shape for docking preview (height is adjusted slightly to compensate for the yet missing tab bar)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Storage for one active tab item (sizeof() 32~40 bytes)
 | 
			
		||||
// Storage for one active tab item (sizeof() 48 bytes)
 | 
			
		||||
struct ImGuiTabItem
 | 
			
		||||
{
 | 
			
		||||
    ImGuiID             ID;
 | 
			
		||||
@@ -2179,12 +2189,12 @@ struct ImGuiTabItem
 | 
			
		||||
    float               Offset;                 // Position relative to beginning of tab
 | 
			
		||||
    float               Width;                  // Width currently displayed
 | 
			
		||||
    float               ContentWidth;           // Width of label, stored during BeginTabItem() call
 | 
			
		||||
    ImS16               NameOffset;             // When Window==NULL, offset to name within parent ImGuiTabBar::TabsNames
 | 
			
		||||
    ImS32               NameOffset;             // When Window==NULL, offset to name within parent ImGuiTabBar::TabsNames
 | 
			
		||||
    ImS16               BeginOrder;             // BeginTabItem() order, used to re-order tabs after toggling ImGuiTabBarFlags_Reorderable
 | 
			
		||||
    ImS16               IndexDuringLayout;      // Index only used during TabBarLayout()
 | 
			
		||||
    bool                WantClose;              // Marked as closed by SetTabItemClosed()
 | 
			
		||||
 | 
			
		||||
    ImGuiTabItem()      { memset(this, 0, sizeof(*this)); LastFrameVisible = LastFrameSelected = -1; NameOffset = BeginOrder = IndexDuringLayout = -1; }
 | 
			
		||||
    ImGuiTabItem()      { memset(this, 0, sizeof(*this)); LastFrameVisible = LastFrameSelected = -1; NameOffset = -1; BeginOrder = IndexDuringLayout = -1; }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Storage for a tab bar (sizeof() 152 bytes)
 | 
			
		||||
@@ -2228,7 +2238,7 @@ struct IMGUI_API ImGuiTabBar
 | 
			
		||||
    {
 | 
			
		||||
        if (tab->Window)
 | 
			
		||||
            return tab->Window->Name;
 | 
			
		||||
        IM_ASSERT(tab->NameOffset != -1 && (int)tab->NameOffset < TabsNames.Buf.Size);
 | 
			
		||||
        IM_ASSERT(tab->NameOffset != -1 && tab->NameOffset < TabsNames.Buf.Size);
 | 
			
		||||
        return TabsNames.Buf.Data + tab->NameOffset;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@@ -2507,7 +2517,6 @@ namespace ImGui
 | 
			
		||||
    IMGUI_API bool          IsWindowChildOf(ImGuiWindow* window, ImGuiWindow* potential_parent);
 | 
			
		||||
    IMGUI_API bool          IsWindowAbove(ImGuiWindow* potential_above, ImGuiWindow* potential_below);
 | 
			
		||||
    IMGUI_API bool          IsWindowNavFocusable(ImGuiWindow* window);
 | 
			
		||||
    IMGUI_API ImRect        GetWindowAllowedExtentRect(ImGuiWindow* window);
 | 
			
		||||
    IMGUI_API void          SetWindowPos(ImGuiWindow* window, const ImVec2& pos, ImGuiCond cond = 0);
 | 
			
		||||
    IMGUI_API void          SetWindowSize(ImGuiWindow* window, const ImVec2& size, ImGuiCond cond = 0);
 | 
			
		||||
    IMGUI_API void          SetWindowCollapsed(ImGuiWindow* window, bool collapsed, ImGuiCond cond = 0);
 | 
			
		||||
@@ -2621,11 +2630,15 @@ namespace ImGui
 | 
			
		||||
    IMGUI_API bool          IsPopupOpen(ImGuiID id, ImGuiPopupFlags popup_flags);
 | 
			
		||||
    IMGUI_API bool          BeginPopupEx(ImGuiID id, ImGuiWindowFlags extra_flags);
 | 
			
		||||
    IMGUI_API void          BeginTooltipEx(ImGuiWindowFlags extra_flags, ImGuiTooltipFlags tooltip_flags);
 | 
			
		||||
    IMGUI_API ImRect        GetPopupAllowedExtentRect(ImGuiWindow* window);
 | 
			
		||||
    IMGUI_API ImGuiWindow*  GetTopMostPopupModal();
 | 
			
		||||
    IMGUI_API ImVec2        FindBestWindowPosForPopup(ImGuiWindow* window);
 | 
			
		||||
    IMGUI_API ImVec2        FindBestWindowPosForPopupEx(const ImVec2& ref_pos, const ImVec2& size, ImGuiDir* last_dir, const ImRect& r_outer, const ImRect& r_avoid, ImGuiPopupPositionPolicy policy);
 | 
			
		||||
    IMGUI_API bool          BeginViewportSideBar(const char* name, ImGuiViewport* viewport, ImGuiDir dir, float size, ImGuiWindowFlags window_flags);
 | 
			
		||||
 | 
			
		||||
    // Combos
 | 
			
		||||
    IMGUI_API bool          BeginComboPopup(ImGuiID popup_id, const ImRect& bb, ImGuiComboFlags flags);
 | 
			
		||||
 | 
			
		||||
    // Gamepad/Keyboard Navigation
 | 
			
		||||
    IMGUI_API void          NavInitWindow(ImGuiWindow* window, bool force_reinit);
 | 
			
		||||
    IMGUI_API bool          NavMoveRequestButNoResultYet();
 | 
			
		||||
 
 | 
			
		||||
@@ -3293,8 +3293,9 @@ void ImGui::TableLoadSettings(ImGuiTable* table)
 | 
			
		||||
static void TableSettingsHandler_ClearAll(ImGuiContext* ctx, ImGuiSettingsHandler*)
 | 
			
		||||
{
 | 
			
		||||
    ImGuiContext& g = *ctx;
 | 
			
		||||
    for (int i = 0; i != g.Tables.GetSize(); i++)
 | 
			
		||||
        g.Tables.GetByIndex(i)->SettingsOffset = -1;
 | 
			
		||||
    for (int i = 0; i != g.Tables.GetMapSize(); i++)
 | 
			
		||||
        if (ImGuiTable* table = g.Tables.TryGetMapData(i))
 | 
			
		||||
            table->SettingsOffset = -1;
 | 
			
		||||
    g.SettingsTables.clear();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -3302,12 +3303,12 @@ static void TableSettingsHandler_ClearAll(ImGuiContext* ctx, ImGuiSettingsHandle
 | 
			
		||||
static void TableSettingsHandler_ApplyAll(ImGuiContext* ctx, ImGuiSettingsHandler*)
 | 
			
		||||
{
 | 
			
		||||
    ImGuiContext& g = *ctx;
 | 
			
		||||
    for (int i = 0; i != g.Tables.GetSize(); i++)
 | 
			
		||||
    {
 | 
			
		||||
        ImGuiTable* table = g.Tables.GetByIndex(i);
 | 
			
		||||
        table->IsSettingsRequestLoad = true;
 | 
			
		||||
        table->SettingsOffset = -1;
 | 
			
		||||
    }
 | 
			
		||||
    for (int i = 0; i != g.Tables.GetMapSize(); i++)
 | 
			
		||||
        if (ImGuiTable* table = g.Tables.TryGetMapData(i))
 | 
			
		||||
        {
 | 
			
		||||
            table->IsSettingsRequestLoad = true;
 | 
			
		||||
            table->SettingsOffset = -1;
 | 
			
		||||
        }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void* TableSettingsHandler_ReadOpen(ImGuiContext*, ImGuiSettingsHandler*, const char* name)
 | 
			
		||||
 
 | 
			
		||||
@@ -1543,7 +1543,9 @@ void ImGui::ShrinkWidths(ImGuiShrinkWidthItem* items, int count, float width_exc
 | 
			
		||||
//-------------------------------------------------------------------------
 | 
			
		||||
// [SECTION] Widgets: ComboBox
 | 
			
		||||
//-------------------------------------------------------------------------
 | 
			
		||||
// - CalcMaxPopupHeightFromItemCount() [Internal]
 | 
			
		||||
// - BeginCombo()
 | 
			
		||||
// - BeginComboPopup() [Internal]
 | 
			
		||||
// - EndCombo()
 | 
			
		||||
// - Combo()
 | 
			
		||||
//-------------------------------------------------------------------------
 | 
			
		||||
@@ -1558,81 +1560,91 @@ static float CalcMaxPopupHeightFromItemCount(int items_count)
 | 
			
		||||
 | 
			
		||||
bool ImGui::BeginCombo(const char* label, const char* preview_value, ImGuiComboFlags flags)
 | 
			
		||||
{
 | 
			
		||||
    // Always consume the SetNextWindowSizeConstraint() call in our early return paths
 | 
			
		||||
    ImGuiContext& g = *GImGui;
 | 
			
		||||
    bool has_window_size_constraint = (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasSizeConstraint) != 0;
 | 
			
		||||
    g.NextWindowData.Flags &= ~ImGuiNextWindowDataFlags_HasSizeConstraint;
 | 
			
		||||
 | 
			
		||||
    ImGuiWindow* window = GetCurrentWindow();
 | 
			
		||||
 | 
			
		||||
    ImGuiNextWindowDataFlags backup_next_window_data_flags = g.NextWindowData.Flags;
 | 
			
		||||
    g.NextWindowData.ClearFlags(); // We behave like Begin() and need to consume those values
 | 
			
		||||
    if (window->SkipItems)
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    IM_ASSERT((flags & (ImGuiComboFlags_NoArrowButton | ImGuiComboFlags_NoPreview)) != (ImGuiComboFlags_NoArrowButton | ImGuiComboFlags_NoPreview)); // Can't use both flags together
 | 
			
		||||
 | 
			
		||||
    const ImGuiStyle& style = g.Style;
 | 
			
		||||
    const ImGuiID id = window->GetID(label);
 | 
			
		||||
    IM_ASSERT((flags & (ImGuiComboFlags_NoArrowButton | ImGuiComboFlags_NoPreview)) != (ImGuiComboFlags_NoArrowButton | ImGuiComboFlags_NoPreview)); // Can't use both flags together
 | 
			
		||||
 | 
			
		||||
    const float arrow_size = (flags & ImGuiComboFlags_NoArrowButton) ? 0.0f : GetFrameHeight();
 | 
			
		||||
    const ImVec2 label_size = CalcTextSize(label, NULL, true);
 | 
			
		||||
    const float expected_w = CalcItemWidth();
 | 
			
		||||
    const float w = (flags & ImGuiComboFlags_NoPreview) ? arrow_size : expected_w;
 | 
			
		||||
    const ImRect frame_bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(w, label_size.y + style.FramePadding.y * 2.0f));
 | 
			
		||||
    const ImRect total_bb(frame_bb.Min, frame_bb.Max + ImVec2(label_size.x > 0.0f ? style.ItemInnerSpacing.x + label_size.x : 0.0f, 0.0f));
 | 
			
		||||
    const float w = (flags & ImGuiComboFlags_NoPreview) ? arrow_size : CalcItemWidth();
 | 
			
		||||
    const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(w, label_size.y + style.FramePadding.y * 2.0f));
 | 
			
		||||
    const ImRect total_bb(bb.Min, bb.Max + ImVec2(label_size.x > 0.0f ? style.ItemInnerSpacing.x + label_size.x : 0.0f, 0.0f));
 | 
			
		||||
    ItemSize(total_bb, style.FramePadding.y);
 | 
			
		||||
    if (!ItemAdd(total_bb, id, &frame_bb))
 | 
			
		||||
    if (!ItemAdd(total_bb, id, &bb))
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    // Open on click
 | 
			
		||||
    bool hovered, held;
 | 
			
		||||
    bool pressed = ButtonBehavior(frame_bb, id, &hovered, &held);
 | 
			
		||||
 | 
			
		||||
    bool pressed = ButtonBehavior(bb, id, &hovered, &held);
 | 
			
		||||
    const ImGuiID popup_id = ImHashStr("##ComboPopup", 0, id);
 | 
			
		||||
    bool popup_open = IsPopupOpen(popup_id, ImGuiPopupFlags_None);
 | 
			
		||||
 | 
			
		||||
    const ImU32 frame_col = GetColorU32(hovered ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg);
 | 
			
		||||
    const float value_x2 = ImMax(frame_bb.Min.x, frame_bb.Max.x - arrow_size);
 | 
			
		||||
    RenderNavHighlight(frame_bb, id);
 | 
			
		||||
    if (!(flags & ImGuiComboFlags_NoPreview))
 | 
			
		||||
        window->DrawList->AddRectFilled(frame_bb.Min, ImVec2(value_x2, frame_bb.Max.y), frame_col, style.FrameRounding, (flags & ImGuiComboFlags_NoArrowButton) ? ImDrawFlags_RoundCornersAll : ImDrawFlags_RoundCornersLeft);
 | 
			
		||||
    if (!(flags & ImGuiComboFlags_NoArrowButton))
 | 
			
		||||
    {
 | 
			
		||||
        ImU32 bg_col = GetColorU32((popup_open || hovered) ? ImGuiCol_ButtonHovered : ImGuiCol_Button);
 | 
			
		||||
        ImU32 text_col = GetColorU32(ImGuiCol_Text);
 | 
			
		||||
        window->DrawList->AddRectFilled(ImVec2(value_x2, frame_bb.Min.y), frame_bb.Max, bg_col, style.FrameRounding, (w <= arrow_size) ? ImDrawFlags_RoundCornersAll : ImDrawFlags_RoundCornersRight);
 | 
			
		||||
        if (value_x2 + arrow_size - style.FramePadding.x <= frame_bb.Max.x)
 | 
			
		||||
            RenderArrow(window->DrawList, ImVec2(value_x2 + style.FramePadding.y, frame_bb.Min.y + style.FramePadding.y), text_col, ImGuiDir_Down, 1.0f);
 | 
			
		||||
    }
 | 
			
		||||
    RenderFrameBorder(frame_bb.Min, frame_bb.Max, style.FrameRounding);
 | 
			
		||||
    if (preview_value != NULL && !(flags & ImGuiComboFlags_NoPreview))
 | 
			
		||||
    {
 | 
			
		||||
        ImVec2 preview_pos = frame_bb.Min + style.FramePadding;
 | 
			
		||||
        if (g.LogEnabled)
 | 
			
		||||
            LogSetNextTextDecoration("{", "}");
 | 
			
		||||
        RenderTextClipped(preview_pos, ImVec2(value_x2, frame_bb.Max.y), preview_value, NULL, NULL, ImVec2(0.0f, 0.0f));
 | 
			
		||||
    }
 | 
			
		||||
    if (label_size.x > 0)
 | 
			
		||||
        RenderText(ImVec2(frame_bb.Max.x + style.ItemInnerSpacing.x, frame_bb.Min.y + style.FramePadding.y), label);
 | 
			
		||||
 | 
			
		||||
    if ((pressed || g.NavActivateId == id) && !popup_open)
 | 
			
		||||
    {
 | 
			
		||||
        if (window->DC.NavLayerCurrent == 0)
 | 
			
		||||
            window->NavLastIds[0] = id;
 | 
			
		||||
        OpenPopupEx(popup_id, ImGuiPopupFlags_None);
 | 
			
		||||
        popup_open = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Render shape
 | 
			
		||||
    const ImU32 frame_col = GetColorU32(hovered ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg);
 | 
			
		||||
    const float value_x2 = ImMax(bb.Min.x, bb.Max.x - arrow_size);
 | 
			
		||||
    RenderNavHighlight(bb, id);
 | 
			
		||||
    if (!(flags & ImGuiComboFlags_NoPreview))
 | 
			
		||||
        window->DrawList->AddRectFilled(bb.Min, ImVec2(value_x2, bb.Max.y), frame_col, style.FrameRounding, (flags & ImGuiComboFlags_NoArrowButton) ? ImDrawFlags_RoundCornersAll : ImDrawFlags_RoundCornersLeft);
 | 
			
		||||
    if (!(flags & ImGuiComboFlags_NoArrowButton))
 | 
			
		||||
    {
 | 
			
		||||
        ImU32 bg_col = GetColorU32((popup_open || hovered) ? ImGuiCol_ButtonHovered : ImGuiCol_Button);
 | 
			
		||||
        ImU32 text_col = GetColorU32(ImGuiCol_Text);
 | 
			
		||||
        window->DrawList->AddRectFilled(ImVec2(value_x2, bb.Min.y), bb.Max, bg_col, style.FrameRounding, (w <= arrow_size) ? ImDrawFlags_RoundCornersAll : ImDrawFlags_RoundCornersRight);
 | 
			
		||||
        if (value_x2 + arrow_size - style.FramePadding.x <= bb.Max.x)
 | 
			
		||||
            RenderArrow(window->DrawList, ImVec2(value_x2 + style.FramePadding.y, bb.Min.y + style.FramePadding.y), text_col, ImGuiDir_Down, 1.0f);
 | 
			
		||||
    }
 | 
			
		||||
    RenderFrameBorder(bb.Min, bb.Max, style.FrameRounding);
 | 
			
		||||
 | 
			
		||||
    // Render preview and label
 | 
			
		||||
    if (preview_value != NULL && !(flags & ImGuiComboFlags_NoPreview))
 | 
			
		||||
    {
 | 
			
		||||
        if (g.LogEnabled)
 | 
			
		||||
            LogSetNextTextDecoration("{", "}");
 | 
			
		||||
        RenderTextClipped(bb.Min + style.FramePadding, ImVec2(value_x2, bb.Max.y), preview_value, NULL, NULL);
 | 
			
		||||
    }
 | 
			
		||||
    if (label_size.x > 0)
 | 
			
		||||
        RenderText(ImVec2(bb.Max.x + style.ItemInnerSpacing.x, bb.Min.y + style.FramePadding.y), label);
 | 
			
		||||
 | 
			
		||||
    if (!popup_open)
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    if (has_window_size_constraint)
 | 
			
		||||
    g.NextWindowData.Flags = backup_next_window_data_flags;
 | 
			
		||||
    return BeginComboPopup(popup_id, bb, flags);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ImGui::BeginComboPopup(ImGuiID popup_id, const ImRect& bb, ImGuiComboFlags flags)
 | 
			
		||||
{
 | 
			
		||||
    ImGuiContext& g = *GImGui;
 | 
			
		||||
    if (!IsPopupOpen(popup_id, ImGuiPopupFlags_None))
 | 
			
		||||
    {
 | 
			
		||||
        g.NextWindowData.ClearFlags();
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Set popup size
 | 
			
		||||
    float w = bb.GetWidth();
 | 
			
		||||
    if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasSizeConstraint)
 | 
			
		||||
    {
 | 
			
		||||
        g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasSizeConstraint;
 | 
			
		||||
        g.NextWindowData.SizeConstraintRect.Min.x = ImMax(g.NextWindowData.SizeConstraintRect.Min.x, w);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        if ((flags & ImGuiComboFlags_HeightMask_) == 0)
 | 
			
		||||
            flags |= ImGuiComboFlags_HeightRegular;
 | 
			
		||||
        IM_ASSERT(ImIsPowerOfTwo(flags & ImGuiComboFlags_HeightMask_));    // Only one
 | 
			
		||||
        IM_ASSERT(ImIsPowerOfTwo(flags & ImGuiComboFlags_HeightMask_)); // Only one
 | 
			
		||||
        int popup_max_height_in_items = -1;
 | 
			
		||||
        if (flags & ImGuiComboFlags_HeightRegular)     popup_max_height_in_items = 8;
 | 
			
		||||
        else if (flags & ImGuiComboFlags_HeightSmall)  popup_max_height_in_items = 4;
 | 
			
		||||
@@ -1640,30 +1652,27 @@ bool ImGui::BeginCombo(const char* label, const char* preview_value, ImGuiComboF
 | 
			
		||||
        SetNextWindowSizeConstraints(ImVec2(w, 0.0f), ImVec2(FLT_MAX, CalcMaxPopupHeightFromItemCount(popup_max_height_in_items)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // This is essentially a specialized version of BeginPopupEx()
 | 
			
		||||
    char name[16];
 | 
			
		||||
    ImFormatString(name, IM_ARRAYSIZE(name), "##Combo_%02d", g.BeginPopupStack.Size); // Recycle windows based on depth
 | 
			
		||||
 | 
			
		||||
    // Position the window given a custom constraint (peak into expected window size so we can position it)
 | 
			
		||||
    // This might be easier to express with an hypothetical SetNextWindowPosConstraints() function.
 | 
			
		||||
    // Set position given a custom constraint (peak into expected window size so we can position it)
 | 
			
		||||
    // FIXME: This might be easier to express with an hypothetical SetNextWindowPosConstraints() function?
 | 
			
		||||
    // FIXME: This might be moved to Begin() or at least around the same spot where Tooltips and other Popups are calling FindBestWindowPosForPopupEx()?
 | 
			
		||||
    if (ImGuiWindow* popup_window = FindWindowByName(name))
 | 
			
		||||
        if (popup_window->WasActive)
 | 
			
		||||
        {
 | 
			
		||||
            // Always override 'AutoPosLastDirection' to not leave a chance for a past value to affect us.
 | 
			
		||||
            ImVec2 size_expected = CalcWindowNextAutoFitSize(popup_window);
 | 
			
		||||
            if (flags & ImGuiComboFlags_PopupAlignLeft)
 | 
			
		||||
                popup_window->AutoPosLastDirection = ImGuiDir_Left; // "Below, Toward Left"
 | 
			
		||||
            else
 | 
			
		||||
                popup_window->AutoPosLastDirection = ImGuiDir_Down; // "Below, Toward Right (default)"
 | 
			
		||||
            ImRect r_outer = GetWindowAllowedExtentRect(popup_window);
 | 
			
		||||
            ImVec2 pos = FindBestWindowPosForPopupEx(frame_bb.GetBL(), size_expected, &popup_window->AutoPosLastDirection, r_outer, frame_bb, ImGuiPopupPositionPolicy_ComboBox);
 | 
			
		||||
            popup_window->AutoPosLastDirection = (flags & ImGuiComboFlags_PopupAlignLeft) ? ImGuiDir_Left : ImGuiDir_Down; // Left = "Below, Toward Left", Down = "Below, Toward Right (default)"
 | 
			
		||||
            ImRect r_outer = GetPopupAllowedExtentRect(popup_window);
 | 
			
		||||
            ImVec2 pos = FindBestWindowPosForPopupEx(bb.GetBL(), size_expected, &popup_window->AutoPosLastDirection, r_outer, bb, ImGuiPopupPositionPolicy_ComboBox);
 | 
			
		||||
            SetNextWindowPos(pos);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    // We don't use BeginPopupEx() solely because we have a custom name string, which we could make an argument to BeginPopupEx()
 | 
			
		||||
    ImGuiWindowFlags window_flags = ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_Popup | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoMove;
 | 
			
		||||
 | 
			
		||||
    // Horizontally align ourselves with the framed text
 | 
			
		||||
    PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(style.FramePadding.x, style.WindowPadding.y));
 | 
			
		||||
    PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(g.Style.FramePadding.x, g.Style.WindowPadding.y)); // Horizontally align ourselves with the framed text
 | 
			
		||||
    bool ret = Begin(name, NULL, window_flags);
 | 
			
		||||
    PopStyleVar();
 | 
			
		||||
    if (!ret)
 | 
			
		||||
@@ -7837,7 +7846,7 @@ bool    ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open,
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        IM_ASSERT(tab->Window == NULL);
 | 
			
		||||
        tab->NameOffset = (ImS16)tab_bar->TabsNames.size();
 | 
			
		||||
        tab->NameOffset = (ImS32)tab_bar->TabsNames.size();
 | 
			
		||||
        tab_bar->TabsNames.append(label, label + strlen(label) + 1); // Append name _with_ the zero-terminator.
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user