mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Merge branch 'master' into drag_and_drop
This commit is contained in:
		| @@ -20,5 +20,5 @@ IMGUI_API bool        ImGui_ImplDX10_CreateDeviceObjects(); | |||||||
| // You may or not need this for your implementation, but it can serve as reference for handling inputs. | // You may or not need this for your implementation, but it can serve as reference for handling inputs. | ||||||
| // Commented out to avoid dragging dependencies on <windows.h> types. You can copy the extern declaration in your code. | // Commented out to avoid dragging dependencies on <windows.h> types. You can copy the extern declaration in your code. | ||||||
| /* | /* | ||||||
| IMGUI_API LRESULT   ImGui_ImplDX10_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); | IMGUI_API LRESULT   ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); | ||||||
| */ | */ | ||||||
|   | |||||||
| @@ -21,5 +21,5 @@ IMGUI_API bool        ImGui_ImplDX11_CreateDeviceObjects(); | |||||||
| // You may or not need this for your implementation, but it can serve as reference for handling inputs. | // You may or not need this for your implementation, but it can serve as reference for handling inputs. | ||||||
| // Commented out to avoid dragging dependencies on <windows.h> types. You can copy the extern declaration in your code. | // Commented out to avoid dragging dependencies on <windows.h> types. You can copy the extern declaration in your code. | ||||||
| /* | /* | ||||||
| IMGUI_API LRESULT   ImGui_ImplDX11_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); | IMGUI_API LRESULT   ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); | ||||||
| */ | */ | ||||||
|   | |||||||
| @@ -20,5 +20,5 @@ IMGUI_API bool        ImGui_ImplDX9_CreateDeviceObjects(); | |||||||
| // You may or not need this for your implementation, but it can serve as reference for handling inputs. | // You may or not need this for your implementation, but it can serve as reference for handling inputs. | ||||||
| // Commented out to avoid dragging dependencies on <windows.h> types. You can copy the extern declaration in your code. | // Commented out to avoid dragging dependencies on <windows.h> types. You can copy the extern declaration in your code. | ||||||
| /* | /* | ||||||
| IMGUI_API LRESULT   ImGui_ImplDX9_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); | IMGUI_API LRESULT   ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); | ||||||
| */ | */ | ||||||
|   | |||||||
							
								
								
									
										95
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										95
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -214,6 +214,8 @@ | |||||||
|  Here is a change-log of API breaking changes, if you are using one of the functions listed, expect to have to fix some code. |  Here is a change-log of API breaking changes, if you are using one of the functions listed, expect to have to fix some code. | ||||||
|  Also read releases logs https://github.com/ocornut/imgui/releases for more details. |  Also read releases logs https://github.com/ocornut/imgui/releases for more details. | ||||||
|  |  | ||||||
|  |  - 2017/11/18 (1.53) - Style: removed ImGuiCol_ComboBg in favor of combo boxes using ImGuiCol_PopupBg for consistency. | ||||||
|  |  - 2017/11/18 (1.53) - Style: renamed style.ChildWindowRounding to style.ChildRounding, ImGuiStyleVar_ChildWindowRounding to ImGuiStyleVar_ChildRounding. | ||||||
|  - 2017/11/02 (1.53) - marked IsRootWindowOrAnyChildHovered() as obsolete is favor of using IsWindowHovered(ImGuiHoveredFlags_FlattenChilds); |  - 2017/11/02 (1.53) - marked IsRootWindowOrAnyChildHovered() as obsolete is favor of using IsWindowHovered(ImGuiHoveredFlags_FlattenChilds); | ||||||
|  - 2017/10/24 (1.52) - renamed IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCS/IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCS to IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS/IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS for consistency. |  - 2017/10/24 (1.52) - renamed IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCS/IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCS to IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS/IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS for consistency. | ||||||
|  - 2017/10/20 (1.52) - changed IsWindowHovered() default parameters behavior to return false if an item is active in another window (e.g. click-dragging item from another window to this window). You can use the newly introduced IsWindowHovered() flags to requests this specific behavior if you need it. |  - 2017/10/20 (1.52) - changed IsWindowHovered() default parameters behavior to return false if an item is active in another window (e.g. click-dragging item from another window to this window). You can use the newly introduced IsWindowHovered() flags to requests this specific behavior if you need it. | ||||||
| @@ -704,7 +706,8 @@ ImGuiStyle::ImGuiStyle() | |||||||
|     WindowMinSize           = ImVec2(32,32);    // Minimum window size |     WindowMinSize           = ImVec2(32,32);    // Minimum window size | ||||||
|     WindowRounding          = 9.0f;             // Radius of window corners rounding. Set to 0.0f to have rectangular windows |     WindowRounding          = 9.0f;             // Radius of window corners rounding. Set to 0.0f to have rectangular windows | ||||||
|     WindowTitleAlign        = ImVec2(0.0f,0.5f);// Alignment for title bar text |     WindowTitleAlign        = ImVec2(0.0f,0.5f);// Alignment for title bar text | ||||||
|     ChildWindowRounding     = 0.0f;             // Radius of child window corners rounding. Set to 0.0f to have rectangular child windows |     ChildRounding           = 0.0f;             // Radius of child window corners rounding. Set to 0.0f to have rectangular child windows | ||||||
|  |     PopupRounding           = 0.0f;             // Radius of popup window corners rounding. Set to 0.0f to have rectangular child windows | ||||||
|     FramePadding            = ImVec2(4,3);      // Padding within a framed rectangle (used by most widgets) |     FramePadding            = ImVec2(4,3);      // Padding within a framed rectangle (used by most widgets) | ||||||
|     FrameRounding           = 0.0f;             // Radius of frame corners rounding. Set to 0.0f to have rectangular frames (used by most widgets). |     FrameRounding           = 0.0f;             // Radius of frame corners rounding. Set to 0.0f to have rectangular frames (used by most widgets). | ||||||
|     ItemSpacing             = ImVec2(8,4);      // Horizontal and vertical spacing between widgets/lines |     ItemSpacing             = ImVec2(8,4);      // Horizontal and vertical spacing between widgets/lines | ||||||
| @@ -727,26 +730,27 @@ ImGuiStyle::ImGuiStyle() | |||||||
| } | } | ||||||
|  |  | ||||||
| // To scale your entire UI (e.g. if you want your app to use High DPI or generally be DPI aware) you may use this helper function. Scaling the fonts is done separately and is up to you. | // To scale your entire UI (e.g. if you want your app to use High DPI or generally be DPI aware) you may use this helper function. Scaling the fonts is done separately and is up to you. | ||||||
| // Tips: if you need to change your scale multiple times, prefer calling this on a freshly initialized ImGuiStyle structure rather than scaling multiple times (because floating point multiplications are lossy). | // Important: This operation is lossy because we round all sizes to integer. If you need to change your scale multiples, call this over a freshly initialized ImGuiStyle structure rather than scaling multiple times. | ||||||
| void ImGuiStyle::ScaleAllSizes(float scale_factor) | void ImGuiStyle::ScaleAllSizes(float scale_factor) | ||||||
| { | { | ||||||
|     WindowPadding *= scale_factor; |     WindowPadding = ImFloor(WindowPadding * scale_factor); | ||||||
|     WindowMinSize *= scale_factor; |     WindowMinSize = ImFloor(WindowMinSize * scale_factor); | ||||||
|     WindowRounding *= scale_factor; |     WindowRounding = ImFloor(WindowRounding * scale_factor); | ||||||
|     ChildWindowRounding *= scale_factor; |     ChildRounding = ImFloor(ChildRounding * scale_factor); | ||||||
|     FramePadding *= scale_factor; |     PopupRounding = ImFloor(PopupRounding * scale_factor); | ||||||
|     FrameRounding *= scale_factor; |     FramePadding = ImFloor(FramePadding * scale_factor); | ||||||
|     ItemSpacing *= scale_factor; |     FrameRounding = ImFloor(FrameRounding * scale_factor); | ||||||
|     ItemInnerSpacing *= scale_factor; |     ItemSpacing = ImFloor(ItemSpacing * scale_factor); | ||||||
|     TouchExtraPadding *= scale_factor; |     ItemInnerSpacing = ImFloor(ItemInnerSpacing * scale_factor); | ||||||
|     IndentSpacing *= scale_factor; |     TouchExtraPadding = ImFloor(TouchExtraPadding * scale_factor); | ||||||
|     ColumnsMinSpacing *= scale_factor; |     IndentSpacing = ImFloor(IndentSpacing * scale_factor); | ||||||
|     ScrollbarSize *= scale_factor; |     ColumnsMinSpacing = ImFloor(ColumnsMinSpacing * scale_factor); | ||||||
|     ScrollbarRounding *= scale_factor; |     ScrollbarSize = ImFloor(ScrollbarSize * scale_factor); | ||||||
|     GrabMinSize *= scale_factor; |     ScrollbarRounding = ImFloor(ScrollbarRounding * scale_factor); | ||||||
|     GrabRounding *= scale_factor; |     GrabMinSize = ImFloor(GrabMinSize * scale_factor); | ||||||
|     DisplayWindowPadding *= scale_factor; |     GrabRounding = ImFloor(GrabRounding * scale_factor); | ||||||
|     DisplaySafeAreaPadding *= scale_factor; |     DisplayWindowPadding = ImFloor(DisplayWindowPadding * scale_factor); | ||||||
|  |     DisplaySafeAreaPadding = ImFloor(DisplaySafeAreaPadding * scale_factor); | ||||||
| } | } | ||||||
|  |  | ||||||
| ImGuiIO::ImGuiIO() | ImGuiIO::ImGuiIO() | ||||||
| @@ -1789,15 +1793,16 @@ ImGuiWindow::ImGuiWindow(const char* name) | |||||||
|     Size = SizeFull = ImVec2(0.0f, 0.0f); |     Size = SizeFull = ImVec2(0.0f, 0.0f); | ||||||
|     SizeContents = SizeContentsExplicit = ImVec2(0.0f, 0.0f); |     SizeContents = SizeContentsExplicit = ImVec2(0.0f, 0.0f); | ||||||
|     WindowPadding = ImVec2(0.0f, 0.0f); |     WindowPadding = ImVec2(0.0f, 0.0f); | ||||||
|  |     WindowRounding = 0.0f; | ||||||
|  |     WindowBorderSize = 0.0f; | ||||||
|     MoveId = GetID("#MOVE"); |     MoveId = GetID("#MOVE"); | ||||||
|     Scroll = ImVec2(0.0f, 0.0f); |     Scroll = ImVec2(0.0f, 0.0f); | ||||||
|     ScrollTarget = ImVec2(FLT_MAX, FLT_MAX); |     ScrollTarget = ImVec2(FLT_MAX, FLT_MAX); | ||||||
|     ScrollTargetCenterRatio = ImVec2(0.5f, 0.5f); |     ScrollTargetCenterRatio = ImVec2(0.5f, 0.5f); | ||||||
|     ScrollbarX = ScrollbarY = false; |     ScrollbarX = ScrollbarY = false; | ||||||
|     ScrollbarSizes = ImVec2(0.0f, 0.0f); |     ScrollbarSizes = ImVec2(0.0f, 0.0f); | ||||||
|     BorderSize = 0.0f; |  | ||||||
|     Active = WasActive = false; |     Active = WasActive = false; | ||||||
|     Accessed = false; |     WriteAccessed = false; | ||||||
|     Collapsed = false; |     Collapsed = false; | ||||||
|     SkipItems = false; |     SkipItems = false; | ||||||
|     Appearing = false; |     Appearing = false; | ||||||
| @@ -2017,6 +2022,9 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) | |||||||
|         return false; |         return false; | ||||||
|     if (window->DC.ItemFlags & ImGuiItemFlags_Disabled) |     if (window->DC.ItemFlags & ImGuiItemFlags_Disabled) | ||||||
|         return false; |         return false; | ||||||
|  |     // Special handling for the 1st item after Begin() which represent the title bar. When the window is collapsed (SkipItems==true) that last item will never be overwritten. | ||||||
|  |     if (window->DC.LastItemId == window->MoveId && window->WriteAccessed) | ||||||
|  |         return false; | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -2429,7 +2437,7 @@ void ImGui::NewFrame() | |||||||
|         ImGuiWindow* window = g.Windows[i]; |         ImGuiWindow* window = g.Windows[i]; | ||||||
|         window->WasActive = window->Active; |         window->WasActive = window->Active; | ||||||
|         window->Active = false; |         window->Active = false; | ||||||
|         window->Accessed = false; |         window->WriteAccessed = false; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // Closing the focused window restore focus to the first active root window in descending z-order |     // Closing the focused window restore focus to the first active root window in descending z-order | ||||||
| @@ -2767,7 +2775,7 @@ void ImGui::EndFrame() | |||||||
|  |  | ||||||
|     // Hide implicit "Debug" window if it hasn't been used |     // Hide implicit "Debug" window if it hasn't been used | ||||||
|     IM_ASSERT(g.CurrentWindowStack.Size == 1);    // Mismatched Begin()/End() calls |     IM_ASSERT(g.CurrentWindowStack.Size == 1);    // Mismatched Begin()/End() calls | ||||||
|     if (g.CurrentWindow && !g.CurrentWindow->Accessed) |     if (g.CurrentWindow && !g.CurrentWindow->WriteAccessed) | ||||||
|         g.CurrentWindow->Active = false; |         g.CurrentWindow->Active = false; | ||||||
|     ImGui::End(); |     ImGui::End(); | ||||||
|  |  | ||||||
| @@ -3885,7 +3893,7 @@ bool ImGui::BeginChildFrame(ImGuiID id, const ImVec2& size, ImGuiWindowFlags ext | |||||||
|     ImGuiContext& g = *GImGui; |     ImGuiContext& g = *GImGui; | ||||||
|     const ImGuiStyle& style = g.Style; |     const ImGuiStyle& style = g.Style; | ||||||
|     PushStyleColor(ImGuiCol_ChildWindowBg, style.Colors[ImGuiCol_FrameBg]); |     PushStyleColor(ImGuiCol_ChildWindowBg, style.Colors[ImGuiCol_FrameBg]); | ||||||
|     PushStyleVar(ImGuiStyleVar_ChildWindowRounding, style.FrameRounding); |     PushStyleVar(ImGuiStyleVar_ChildRounding, style.FrameRounding); | ||||||
|     PushStyleVar(ImGuiStyleVar_WindowPadding, style.FramePadding); |     PushStyleVar(ImGuiStyleVar_WindowPadding, style.FramePadding); | ||||||
|     return BeginChild(id, size, (g.CurrentWindow->Flags & ImGuiWindowFlags_ShowBorders) ? true : false, ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysUseWindowPadding | extra_flags); |     return BeginChild(id, size, (g.CurrentWindow->Flags & ImGuiWindowFlags_ShowBorders) ? true : false, ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysUseWindowPadding | extra_flags); | ||||||
| } | } | ||||||
| @@ -4088,8 +4096,6 @@ static ImVec2 CalcNextScrollFromScrollTargetAndClamp(ImGuiWindow* window) | |||||||
|  |  | ||||||
| static ImGuiCol GetWindowBgColorIdxFromFlags(ImGuiWindowFlags flags) | static ImGuiCol GetWindowBgColorIdxFromFlags(ImGuiWindowFlags flags) | ||||||
| { | { | ||||||
|     if (flags & ImGuiWindowFlags_ComboBox) |  | ||||||
|         return ImGuiCol_ComboBg; |  | ||||||
|     if (flags & (ImGuiWindowFlags_Tooltip | ImGuiWindowFlags_Popup)) |     if (flags & (ImGuiWindowFlags_Tooltip | ImGuiWindowFlags_Popup)) | ||||||
|         return ImGuiCol_PopupBg; |         return ImGuiCol_PopupBg; | ||||||
|     if (flags & ImGuiWindowFlags_ChildWindow) |     if (flags & ImGuiWindowFlags_ChildWindow) | ||||||
| @@ -4281,6 +4287,9 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) | |||||||
|         window->WindowPadding = style.WindowPadding; |         window->WindowPadding = style.WindowPadding; | ||||||
|         if ((flags & ImGuiWindowFlags_ChildWindow) && !(flags & (ImGuiWindowFlags_AlwaysUseWindowPadding | ImGuiWindowFlags_ShowBorders | ImGuiWindowFlags_ComboBox | ImGuiWindowFlags_Popup))) |         if ((flags & ImGuiWindowFlags_ChildWindow) && !(flags & (ImGuiWindowFlags_AlwaysUseWindowPadding | ImGuiWindowFlags_ShowBorders | ImGuiWindowFlags_ComboBox | ImGuiWindowFlags_Popup))) | ||||||
|             window->WindowPadding = ImVec2(0.0f, (flags & ImGuiWindowFlags_MenuBar) ? style.WindowPadding.y : 0.0f); |             window->WindowPadding = ImVec2(0.0f, (flags & ImGuiWindowFlags_MenuBar) ? style.WindowPadding.y : 0.0f); | ||||||
|  |         window->WindowBorderSize = (flags & ImGuiWindowFlags_ShowBorders) ? 1.0f : 0.0f; | ||||||
|  |         window->WindowRounding = (flags & ImGuiWindowFlags_ChildWindow) ? style.ChildRounding : ((flags & ImGuiWindowFlags_Popup) && !(flags & ImGuiWindowFlags_Modal)) ? style.PopupRounding : style.WindowRounding; | ||||||
|  |         const float window_rounding = window->WindowRounding; | ||||||
|  |  | ||||||
|         // Calculate auto-fit size, handle automatic resize |         // Calculate auto-fit size, handle automatic resize | ||||||
|         const ImVec2 size_auto_fit = CalcSizeAutoFit(window); |         const ImVec2 size_auto_fit = CalcSizeAutoFit(window); | ||||||
| @@ -4329,7 +4338,6 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) | |||||||
|             if (window->ScrollbarX && !window->ScrollbarY) |             if (window->ScrollbarX && !window->ScrollbarY) | ||||||
|                 window->ScrollbarY = (window->SizeContents.y > window->SizeFull.y + style.ItemSpacing.y - style.ScrollbarSize) && !(flags & ImGuiWindowFlags_NoScrollbar); |                 window->ScrollbarY = (window->SizeContents.y > window->SizeFull.y + style.ItemSpacing.y - style.ScrollbarSize) && !(flags & ImGuiWindowFlags_NoScrollbar); | ||||||
|             window->ScrollbarSizes = ImVec2(window->ScrollbarY ? style.ScrollbarSize : 0.0f, window->ScrollbarX ? style.ScrollbarSize : 0.0f); |             window->ScrollbarSizes = ImVec2(window->ScrollbarY ? style.ScrollbarSize : 0.0f, window->ScrollbarX ? style.ScrollbarSize : 0.0f); | ||||||
|             window->BorderSize = (flags & ImGuiWindowFlags_ShowBorders) ? 1.0f : 0.0f; |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // POSITION |         // POSITION | ||||||
| @@ -4412,7 +4420,6 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) | |||||||
|  |  | ||||||
|         // Draw window + handle manual resize |         // Draw window + handle manual resize | ||||||
|         ImRect title_bar_rect = window->TitleBarRect(); |         ImRect title_bar_rect = window->TitleBarRect(); | ||||||
|         const float window_rounding = (flags & ImGuiWindowFlags_ChildWindow) ? style.ChildWindowRounding : style.WindowRounding; |  | ||||||
|         if (window->Collapsed) |         if (window->Collapsed) | ||||||
|         { |         { | ||||||
|             // Title bar only |             // Title bar only | ||||||
| @@ -4486,9 +4493,9 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) | |||||||
|             if (!(flags & ImGuiWindowFlags_NoResize)) |             if (!(flags & ImGuiWindowFlags_NoResize)) | ||||||
|             { |             { | ||||||
|                 const ImVec2 br = window->Rect().GetBR(); |                 const ImVec2 br = window->Rect().GetBR(); | ||||||
|                 window->DrawList->PathLineTo(br + ImVec2(-resize_corner_size, -window->BorderSize)); |                 window->DrawList->PathLineTo(br + ImVec2(-resize_corner_size, -window->WindowBorderSize)); | ||||||
|                 window->DrawList->PathLineTo(br + ImVec2(-window->BorderSize, -resize_corner_size)); |                 window->DrawList->PathLineTo(br + ImVec2(-window->WindowBorderSize, -resize_corner_size)); | ||||||
|                 window->DrawList->PathArcToFast(ImVec2(br.x - window_rounding - window->BorderSize, br.y - window_rounding - window->BorderSize), window_rounding, 0, 3); |                 window->DrawList->PathArcToFast(ImVec2(br.x - window_rounding - window->WindowBorderSize, br.y - window_rounding - window->WindowBorderSize), window_rounding, 0, 3); | ||||||
|                 window->DrawList->PathFillConvex(resize_col); |                 window->DrawList->PathFillConvex(resize_col); | ||||||
|             } |             } | ||||||
|  |  | ||||||
| @@ -4619,7 +4626,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) | |||||||
|  |  | ||||||
|     // Inner clipping rectangle |     // Inner clipping rectangle | ||||||
|     // Force round operator last to ensure that e.g. (int)(max.x-min.x) in user's render code produce correct result. |     // Force round operator last to ensure that e.g. (int)(max.x-min.x) in user's render code produce correct result. | ||||||
|     const float border_size = window->BorderSize; |     const float border_size = window->WindowBorderSize; | ||||||
|     ImRect clip_rect; |     ImRect clip_rect; | ||||||
|     clip_rect.Min.x = ImFloor(0.5f + window->InnerRect.Min.x + ImMax(border_size, ImFloor(window->WindowPadding.x*0.5f))); |     clip_rect.Min.x = ImFloor(0.5f + window->InnerRect.Min.x + ImMax(border_size, ImFloor(window->WindowPadding.x*0.5f))); | ||||||
|     clip_rect.Min.y = ImFloor(0.5f + window->InnerRect.Min.y + border_size); |     clip_rect.Min.y = ImFloor(0.5f + window->InnerRect.Min.y + border_size); | ||||||
| @@ -4629,7 +4636,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) | |||||||
|  |  | ||||||
|     // Clear 'accessed' flag last thing (After PushClipRect which will set the flag. We want the flag to stay false when the default "Debug" window is unused) |     // Clear 'accessed' flag last thing (After PushClipRect which will set the flag. We want the flag to stay false when the default "Debug" window is unused) | ||||||
|     if (first_begin_of_the_frame) |     if (first_begin_of_the_frame) | ||||||
|         window->Accessed = false; |         window->WriteAccessed = false; | ||||||
|  |  | ||||||
|     window->BeginCount++; |     window->BeginCount++; | ||||||
|     g.SetNextWindowSizeConstraint = false; |     g.SetNextWindowSizeConstraint = false; | ||||||
| @@ -4723,7 +4730,7 @@ void ImGui::Scrollbar(ImGuiLayoutType direction) | |||||||
|     bool other_scrollbar = (horizontal ? window->ScrollbarY : window->ScrollbarX); |     bool other_scrollbar = (horizontal ? window->ScrollbarY : window->ScrollbarX); | ||||||
|     float other_scrollbar_size_w = other_scrollbar ? style.ScrollbarSize : 0.0f; |     float other_scrollbar_size_w = other_scrollbar ? style.ScrollbarSize : 0.0f; | ||||||
|     const ImRect window_rect = window->Rect(); |     const ImRect window_rect = window->Rect(); | ||||||
|     const float border_size = window->BorderSize; |     const float border_size = window->WindowBorderSize; | ||||||
|     ImRect bb = horizontal |     ImRect bb = horizontal | ||||||
|         ? ImRect(window->Pos.x + border_size, window_rect.Max.y - style.ScrollbarSize, window_rect.Max.x - other_scrollbar_size_w - border_size, window_rect.Max.y - border_size) |         ? ImRect(window->Pos.x + border_size, window_rect.Max.y - style.ScrollbarSize, window_rect.Max.x - other_scrollbar_size_w - border_size, window_rect.Max.y - border_size) | ||||||
|         : ImRect(window_rect.Max.x - style.ScrollbarSize, window->Pos.y + border_size, window_rect.Max.x - border_size, window_rect.Max.y - other_scrollbar_size_w - border_size); |         : ImRect(window_rect.Max.x - style.ScrollbarSize, window->Pos.y + border_size, window_rect.Max.x - border_size, window_rect.Max.y - other_scrollbar_size_w - border_size); | ||||||
| @@ -4732,13 +4739,12 @@ void ImGui::Scrollbar(ImGuiLayoutType direction) | |||||||
|     if (bb.GetWidth() <= 0.0f || bb.GetHeight() <= 0.0f) |     if (bb.GetWidth() <= 0.0f || bb.GetHeight() <= 0.0f) | ||||||
|         return; |         return; | ||||||
|  |  | ||||||
|     float window_rounding = (window->Flags & ImGuiWindowFlags_ChildWindow) ? style.ChildWindowRounding : style.WindowRounding; |  | ||||||
|     int window_rounding_corners; |     int window_rounding_corners; | ||||||
|     if (horizontal) |     if (horizontal) | ||||||
|         window_rounding_corners = ImGuiCorner_BotLeft | (other_scrollbar ? 0 : ImGuiCorner_BotRight); |         window_rounding_corners = ImGuiCorner_BotLeft | (other_scrollbar ? 0 : ImGuiCorner_BotRight); | ||||||
|     else |     else | ||||||
|         window_rounding_corners = (((window->Flags & ImGuiWindowFlags_NoTitleBar) && !(window->Flags & ImGuiWindowFlags_MenuBar)) ? ImGuiCorner_TopRight : 0) | (other_scrollbar ? 0 : ImGuiCorner_BotRight); |         window_rounding_corners = (((window->Flags & ImGuiWindowFlags_NoTitleBar) && !(window->Flags & ImGuiWindowFlags_MenuBar)) ? ImGuiCorner_TopRight : 0) | (other_scrollbar ? 0 : ImGuiCorner_BotRight); | ||||||
|     window->DrawList->AddRectFilled(bb.Min, bb.Max, GetColorU32(ImGuiCol_ScrollbarBg), window_rounding, window_rounding_corners); |     window->DrawList->AddRectFilled(bb.Min, bb.Max, GetColorU32(ImGuiCol_ScrollbarBg), window->WindowRounding, window_rounding_corners); | ||||||
|     bb.Expand(ImVec2(-ImClamp((float)(int)((bb.Max.x - bb.Min.x - 2.0f) * 0.5f), 0.0f, 3.0f), -ImClamp((float)(int)((bb.Max.y - bb.Min.y - 2.0f) * 0.5f), 0.0f, 3.0f))); |     bb.Expand(ImVec2(-ImClamp((float)(int)((bb.Max.x - bb.Min.x - 2.0f) * 0.5f), 0.0f, 3.0f), -ImClamp((float)(int)((bb.Max.y - bb.Min.y - 2.0f) * 0.5f), 0.0f, 3.0f))); | ||||||
|  |  | ||||||
|     // V denote the main, longer axis of the scrollbar (= height for a vertical scrollbar) |     // V denote the main, longer axis of the scrollbar (= height for a vertical scrollbar) | ||||||
| @@ -5055,7 +5061,8 @@ static const ImGuiStyleVarInfo GStyleVarInfo[ImGuiStyleVar_Count_] = | |||||||
|     { ImGuiDataType_Float2, (ImU32)IM_OFFSETOF(ImGuiStyle, WindowPadding) },        // ImGuiStyleVar_WindowPadding |     { ImGuiDataType_Float2, (ImU32)IM_OFFSETOF(ImGuiStyle, WindowPadding) },        // ImGuiStyleVar_WindowPadding | ||||||
|     { ImGuiDataType_Float,  (ImU32)IM_OFFSETOF(ImGuiStyle, WindowRounding) },       // ImGuiStyleVar_WindowRounding |     { ImGuiDataType_Float,  (ImU32)IM_OFFSETOF(ImGuiStyle, WindowRounding) },       // ImGuiStyleVar_WindowRounding | ||||||
|     { ImGuiDataType_Float2, (ImU32)IM_OFFSETOF(ImGuiStyle, WindowMinSize) },        // ImGuiStyleVar_WindowMinSize |     { ImGuiDataType_Float2, (ImU32)IM_OFFSETOF(ImGuiStyle, WindowMinSize) },        // ImGuiStyleVar_WindowMinSize | ||||||
|     { ImGuiDataType_Float,  (ImU32)IM_OFFSETOF(ImGuiStyle, ChildWindowRounding) },  // ImGuiStyleVar_ChildWindowRounding |     { ImGuiDataType_Float,  (ImU32)IM_OFFSETOF(ImGuiStyle, ChildRounding) },        // ImGuiStyleVar_ChildRounding | ||||||
|  |     { ImGuiDataType_Float,  (ImU32)IM_OFFSETOF(ImGuiStyle, PopupRounding) },        // ImGuiStyleVar_PopupRounding | ||||||
|     { ImGuiDataType_Float2, (ImU32)IM_OFFSETOF(ImGuiStyle, FramePadding) },         // ImGuiStyleVar_FramePadding |     { ImGuiDataType_Float2, (ImU32)IM_OFFSETOF(ImGuiStyle, FramePadding) },         // ImGuiStyleVar_FramePadding | ||||||
|     { ImGuiDataType_Float,  (ImU32)IM_OFFSETOF(ImGuiStyle, FrameRounding) },        // ImGuiStyleVar_FrameRounding |     { ImGuiDataType_Float,  (ImU32)IM_OFFSETOF(ImGuiStyle, FrameRounding) },        // ImGuiStyleVar_FrameRounding | ||||||
|     { ImGuiDataType_Float2, (ImU32)IM_OFFSETOF(ImGuiStyle, ItemSpacing) },          // ImGuiStyleVar_ItemSpacing |     { ImGuiDataType_Float2, (ImU32)IM_OFFSETOF(ImGuiStyle, ItemSpacing) },          // ImGuiStyleVar_ItemSpacing | ||||||
| @@ -5137,7 +5144,6 @@ const char* ImGui::GetStyleColorName(ImGuiCol idx) | |||||||
|     case ImGuiCol_ScrollbarGrab: return "ScrollbarGrab"; |     case ImGuiCol_ScrollbarGrab: return "ScrollbarGrab"; | ||||||
|     case ImGuiCol_ScrollbarGrabHovered: return "ScrollbarGrabHovered"; |     case ImGuiCol_ScrollbarGrabHovered: return "ScrollbarGrabHovered"; | ||||||
|     case ImGuiCol_ScrollbarGrabActive: return "ScrollbarGrabActive"; |     case ImGuiCol_ScrollbarGrabActive: return "ScrollbarGrabActive"; | ||||||
|     case ImGuiCol_ComboBg: return "ComboBg"; |  | ||||||
|     case ImGuiCol_CheckMark: return "CheckMark"; |     case ImGuiCol_CheckMark: return "CheckMark"; | ||||||
|     case ImGuiCol_SliderGrab: return "SliderGrab"; |     case ImGuiCol_SliderGrab: return "SliderGrab"; | ||||||
|     case ImGuiCol_SliderGrabActive: return "SliderGrabActive"; |     case ImGuiCol_SliderGrabActive: return "SliderGrabActive"; | ||||||
| @@ -7648,7 +7654,7 @@ void ImGui::ProgressBar(float fraction, const ImVec2& size_arg, const char* over | |||||||
|     // Render |     // Render | ||||||
|     fraction = ImSaturate(fraction); |     fraction = ImSaturate(fraction); | ||||||
|     RenderFrame(bb.Min, bb.Max, GetColorU32(ImGuiCol_FrameBg), true, style.FrameRounding); |     RenderFrame(bb.Min, bb.Max, GetColorU32(ImGuiCol_FrameBg), true, style.FrameRounding); | ||||||
|     bb.Expand(ImVec2(-window->BorderSize, -window->BorderSize)); |     bb.Expand(ImVec2(-window->WindowBorderSize, -window->WindowBorderSize)); | ||||||
|     const ImVec2 fill_br = ImVec2(ImLerp(bb.Min.x, bb.Max.x, fraction), bb.Max.y); |     const ImVec2 fill_br = ImVec2(ImLerp(bb.Min.x, bb.Max.x, fraction), bb.Max.y); | ||||||
|     RenderRectFilledRangeH(window->DrawList, bb, GetColorU32(ImGuiCol_PlotHistogram), 0.0f, fraction, style.FrameRounding); |     RenderRectFilledRangeH(window->DrawList, bb, GetColorU32(ImGuiCol_PlotHistogram), 0.0f, fraction, style.FrameRounding); | ||||||
|  |  | ||||||
| @@ -8913,12 +8919,12 @@ bool ImGui::BeginCombo(const char* label, const char* preview_value, ImVec2 popu | |||||||
|         // Position our combo ABOVE because there's more space to fit! (FIXME: Handle in Begin() or use a shared helper. We have similar code in Begin() for popup placement) |         // Position our combo ABOVE because there's more space to fit! (FIXME: Handle in Begin() or use a shared helper. We have similar code in Begin() for popup placement) | ||||||
|         popup_y1 = ImClamp(frame_bb.Min.y - popup_size.y, style.DisplaySafeAreaPadding.y, frame_bb.Min.y); |         popup_y1 = ImClamp(frame_bb.Min.y - popup_size.y, style.DisplaySafeAreaPadding.y, frame_bb.Min.y); | ||||||
|         popup_y2 = frame_bb.Min.y; |         popup_y2 = frame_bb.Min.y; | ||||||
|         SetNextWindowPos(ImVec2(frame_bb.Min.x, frame_bb.Min.y), ImGuiCond_Always, ImVec2(0.0f, 1.0f)); |         SetNextWindowPos(ImVec2(frame_bb.Min.x, frame_bb.Min.y + window->WindowBorderSize), ImGuiCond_Always, ImVec2(0.0f, 1.0f)); | ||||||
|     } |     } | ||||||
|     else |     else | ||||||
|     { |     { | ||||||
|         // Position our combo below |         // Position our combo below | ||||||
|         SetNextWindowPos(ImVec2(frame_bb.Min.x, frame_bb.Max.y), ImGuiCond_Always, ImVec2(0.0f, 0.0f)); |         SetNextWindowPos(ImVec2(frame_bb.Min.x, frame_bb.Max.y - window->WindowBorderSize), ImGuiCond_Always, ImVec2(0.0f, 0.0f)); | ||||||
|     } |     } | ||||||
|     SetNextWindowSize(ImVec2(popup_size.x, popup_y2 - popup_y1), ImGuiCond_Appearing); |     SetNextWindowSize(ImVec2(popup_size.x, popup_y2 - popup_y1), ImGuiCond_Appearing); | ||||||
|     PushStyleVar(ImGuiStyleVar_WindowPadding, style.FramePadding); |     PushStyleVar(ImGuiStyleVar_WindowPadding, style.FramePadding); | ||||||
| @@ -9257,7 +9263,7 @@ bool ImGui::BeginMenuBar() | |||||||
|     PushID("##menubar"); |     PushID("##menubar"); | ||||||
|     ImRect rect = window->MenuBarRect(); |     ImRect rect = window->MenuBarRect(); | ||||||
|     rect.Max.x = ImMax(rect.Min.x, rect.Max.x - g.Style.WindowRounding); |     rect.Max.x = ImMax(rect.Min.x, rect.Max.x - g.Style.WindowRounding); | ||||||
|     PushClipRect(ImVec2(ImFloor(rect.Min.x+0.5f), ImFloor(rect.Min.y + window->BorderSize + 0.5f)), ImVec2(ImFloor(rect.Max.x+0.5f), ImFloor(rect.Max.y+0.5f)), false); |     PushClipRect(ImVec2(ImFloor(rect.Min.x+0.5f), ImFloor(rect.Min.y + window->WindowBorderSize + 0.5f)), ImVec2(ImFloor(rect.Max.x+0.5f), ImFloor(rect.Max.y+0.5f)), false); | ||||||
|     window->DC.CursorPos = ImVec2(rect.Min.x + window->DC.MenuBarOffsetX, rect.Min.y);// + g.Style.FramePadding.y); |     window->DC.CursorPos = ImVec2(rect.Min.x + window->DC.MenuBarOffsetX, rect.Min.y);// + g.Style.FramePadding.y); | ||||||
|     window->DC.LayoutType = ImGuiLayoutType_Horizontal; |     window->DC.LayoutType = ImGuiLayoutType_Horizontal; | ||||||
|     window->DC.MenuBarAppending = true; |     window->DC.MenuBarAppending = true; | ||||||
| @@ -10554,7 +10560,8 @@ void ImGui::EndColumns() | |||||||
|  |  | ||||||
|     window->DC.ColumnsCellMaxY = ImMax(window->DC.ColumnsCellMaxY, window->DC.CursorPos.y); |     window->DC.ColumnsCellMaxY = ImMax(window->DC.ColumnsCellMaxY, window->DC.CursorPos.y); | ||||||
|     window->DC.CursorPos.y = window->DC.ColumnsCellMaxY; |     window->DC.CursorPos.y = window->DC.ColumnsCellMaxY; | ||||||
|     window->DC.CursorMaxPos.x = ImMax(window->DC.ColumnsStartMaxPosX, window->DC.ColumnsMaxX);  // Columns don't grow parent |     if (!(window->DC.ColumnsFlags & ImGuiColumnsFlags_GrowParentContentsSize)) | ||||||
|  |         window->DC.CursorMaxPos.x = ImMax(window->DC.ColumnsStartMaxPosX, window->DC.ColumnsMaxX);  // Restore cursor max pos, as columns don't grow parent | ||||||
|  |  | ||||||
|     // Draw columns borders and handle resize |     // Draw columns borders and handle resize | ||||||
|     if (!(window->DC.ColumnsFlags & ImGuiColumnsFlags_NoBorder) && !window->SkipItems) |     if (!(window->DC.ColumnsFlags & ImGuiColumnsFlags_NoBorder) && !window->SkipItems) | ||||||
| @@ -11140,7 +11147,7 @@ void ImGui::ShowMetricsWindow(bool* p_open) | |||||||
|                 if (ImGui::IsItemHovered()) |                 if (ImGui::IsItemHovered()) | ||||||
|                     GImGui->OverlayDrawList.AddRect(window->Pos, window->Pos + window->Size, IM_COL32(255,255,0,255)); |                     GImGui->OverlayDrawList.AddRect(window->Pos, window->Pos + window->Size, IM_COL32(255,255,0,255)); | ||||||
|                 ImGui::BulletText("Scroll: (%.2f,%.2f)", window->Scroll.x, window->Scroll.y); |                 ImGui::BulletText("Scroll: (%.2f,%.2f)", window->Scroll.x, window->Scroll.y); | ||||||
|                 ImGui::BulletText("Active: %d, Accessed: %d", window->Active, window->Accessed); |                 ImGui::BulletText("Active: %d, WriteAccessed: %d", window->Active, window->WriteAccessed); | ||||||
|                 if (window->RootWindow != window) NodeWindow(window->RootWindow, "RootWindow"); |                 if (window->RootWindow != window) NodeWindow(window->RootWindow, "RootWindow"); | ||||||
|                 if (window->DC.ChildWindows.Size > 0) NodeWindows(window->DC.ChildWindows, "ChildWindows"); |                 if (window->DC.ChildWindows.Size > 0) NodeWindows(window->DC.ChildWindows, "ChildWindows"); | ||||||
|                 ImGui::BulletText("Storage: %d bytes", window->StateStorage.Data.Size * (int)sizeof(ImGuiStorage::Pair)); |                 ImGui::BulletText("Storage: %d bytes", window->StateStorage.Data.Size * (int)sizeof(ImGuiStorage::Pair)); | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -260,7 +260,7 @@ namespace ImGui | |||||||
|     IMGUI_API ImGuiID       GetID(const void* ptr_id); |     IMGUI_API ImGuiID       GetID(const void* ptr_id); | ||||||
|  |  | ||||||
|     // Widgets: Text |     // Widgets: Text | ||||||
|     IMGUI_API void          TextUnformatted(const char* text, const char* text_end = NULL);               // doesn't require null terminated string if 'text_end' is specified. no copy done, no limits, recommended for long chunks of text |     IMGUI_API void          TextUnformatted(const char* text, const char* text_end = NULL);               // raw text without formatting. Roughly equivalent to Text("%s", text) but: A) doesn't require null terminated string if 'text_end' is specified, B) it's faster, no memory copy is done, no buffer size limits, recommended for long chunks of text. | ||||||
|     IMGUI_API void          Text(const char* fmt, ...)                                     IM_FMTARGS(1); // simple formatted text |     IMGUI_API void          Text(const char* fmt, ...)                                     IM_FMTARGS(1); // simple formatted text | ||||||
|     IMGUI_API void          TextV(const char* fmt, va_list args)                           IM_FMTLIST(1); |     IMGUI_API void          TextV(const char* fmt, va_list args)                           IM_FMTLIST(1); | ||||||
|     IMGUI_API void          TextColored(const ImVec4& col, const char* fmt, ...)           IM_FMTARGS(2); // shortcut for PushStyleColor(ImGuiCol_Text, col); Text(fmt, ...); PopStyleColor(); |     IMGUI_API void          TextColored(const ImVec4& col, const char* fmt, ...)           IM_FMTARGS(2); // shortcut for PushStyleColor(ImGuiCol_Text, col); Text(fmt, ...); PopStyleColor(); | ||||||
| @@ -427,6 +427,7 @@ namespace ImGui | |||||||
|     // Styles |     // Styles | ||||||
|     IMGUI_API void          StyleColorsClassic(ImGuiStyle* dst = NULL); |     IMGUI_API void          StyleColorsClassic(ImGuiStyle* dst = NULL); | ||||||
|     IMGUI_API void          StyleColorsDark(ImGuiStyle* dst = NULL); |     IMGUI_API void          StyleColorsDark(ImGuiStyle* dst = NULL); | ||||||
|  |     IMGUI_API void          StyleColorsLight(ImGuiStyle* dst = NULL); | ||||||
|  |  | ||||||
|     // Utilities |     // Utilities | ||||||
|     IMGUI_API bool          IsItemHovered(ImGuiHoveredFlags flags = 0);                         // is the last item hovered by mouse (and usable)? |     IMGUI_API bool          IsItemHovered(ImGuiHoveredFlags flags = 0);                         // is the last item hovered by mouse (and usable)? | ||||||
| @@ -653,7 +654,6 @@ enum ImGuiCol_ | |||||||
|     ImGuiCol_ScrollbarGrab, |     ImGuiCol_ScrollbarGrab, | ||||||
|     ImGuiCol_ScrollbarGrabHovered, |     ImGuiCol_ScrollbarGrabHovered, | ||||||
|     ImGuiCol_ScrollbarGrabActive, |     ImGuiCol_ScrollbarGrabActive, | ||||||
|     ImGuiCol_ComboBg, |  | ||||||
|     ImGuiCol_CheckMark, |     ImGuiCol_CheckMark, | ||||||
|     ImGuiCol_SliderGrab, |     ImGuiCol_SliderGrab, | ||||||
|     ImGuiCol_SliderGrabActive, |     ImGuiCol_SliderGrabActive, | ||||||
| @@ -696,7 +696,8 @@ enum ImGuiStyleVar_ | |||||||
|     ImGuiStyleVar_WindowPadding,       // ImVec2    WindowPadding |     ImGuiStyleVar_WindowPadding,       // ImVec2    WindowPadding | ||||||
|     ImGuiStyleVar_WindowRounding,      // float     WindowRounding |     ImGuiStyleVar_WindowRounding,      // float     WindowRounding | ||||||
|     ImGuiStyleVar_WindowMinSize,       // ImVec2    WindowMinSize |     ImGuiStyleVar_WindowMinSize,       // ImVec2    WindowMinSize | ||||||
|     ImGuiStyleVar_ChildWindowRounding, // float     ChildWindowRounding |     ImGuiStyleVar_ChildRounding,       // float     ChildRounding | ||||||
|  |     ImGuiStyleVar_PopupRounding,       // float     PopupRounding | ||||||
|     ImGuiStyleVar_FramePadding,        // ImVec2    FramePadding |     ImGuiStyleVar_FramePadding,        // ImVec2    FramePadding | ||||||
|     ImGuiStyleVar_FrameRounding,       // float     FrameRounding |     ImGuiStyleVar_FrameRounding,       // float     FrameRounding | ||||||
|     ImGuiStyleVar_ItemSpacing,         // ImVec2    ItemSpacing |     ImGuiStyleVar_ItemSpacing,         // ImVec2    ItemSpacing | ||||||
| @@ -705,6 +706,11 @@ enum ImGuiStyleVar_ | |||||||
|     ImGuiStyleVar_GrabMinSize,         // float     GrabMinSize |     ImGuiStyleVar_GrabMinSize,         // float     GrabMinSize | ||||||
|     ImGuiStyleVar_ButtonTextAlign,     // ImVec2    ButtonTextAlign |     ImGuiStyleVar_ButtonTextAlign,     // ImVec2    ButtonTextAlign | ||||||
|     ImGuiStyleVar_Count_ |     ImGuiStyleVar_Count_ | ||||||
|  |  | ||||||
|  |     // Obsolete names (will be removed) | ||||||
|  | #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS | ||||||
|  |     , ImGuiStyleVar_ChildWindowRounding = ImGuiStyleVar_ChildRounding | ||||||
|  | #endif | ||||||
| }; | }; | ||||||
|  |  | ||||||
| // Enumeration for ColorEdit3() / ColorEdit4() / ColorPicker3() / ColorPicker4() / ColorButton() | // Enumeration for ColorEdit3() / ColorEdit4() / ColorPicker3() / ColorPicker4() / ColorButton() | ||||||
| @@ -773,7 +779,8 @@ struct ImGuiStyle | |||||||
|     ImVec2      WindowMinSize;              // Minimum window size |     ImVec2      WindowMinSize;              // Minimum window size | ||||||
|     float       WindowRounding;             // Radius of window corners rounding. Set to 0.0f to have rectangular windows |     float       WindowRounding;             // Radius of window corners rounding. Set to 0.0f to have rectangular windows | ||||||
|     ImVec2      WindowTitleAlign;           // Alignment for title bar text. Defaults to (0.0f,0.5f) for left-aligned,vertically centered. |     ImVec2      WindowTitleAlign;           // Alignment for title bar text. Defaults to (0.0f,0.5f) for left-aligned,vertically centered. | ||||||
|     float       ChildWindowRounding;        // Radius of child window corners rounding. Set to 0.0f to have rectangular windows |     float       ChildRounding;              // Radius of child window corners rounding. Set to 0.0f to have rectangular windows. | ||||||
|  |     float       PopupRounding;              // Radius of popup window corners rounding. | ||||||
|     ImVec2      FramePadding;               // Padding within a framed rectangle (used by most widgets) |     ImVec2      FramePadding;               // Padding within a framed rectangle (used by most widgets) | ||||||
|     float       FrameRounding;              // Radius of frame corners rounding. Set to 0.0f to have rectangular frame (used by most widgets). |     float       FrameRounding;              // Radius of frame corners rounding. Set to 0.0f to have rectangular frame (used by most widgets). | ||||||
|     ImVec2      ItemSpacing;                // Horizontal and vertical spacing between widgets/lines |     ImVec2      ItemSpacing;                // Horizontal and vertical spacing between widgets/lines | ||||||
|   | |||||||
| @@ -1000,7 +1000,7 @@ void ImGui::ShowTestWindow(bool* p_open) | |||||||
|  |  | ||||||
|             ImGui::SameLine(); |             ImGui::SameLine(); | ||||||
|  |  | ||||||
|             ImGui::PushStyleVar(ImGuiStyleVar_ChildWindowRounding, 5.0f); |             ImGui::PushStyleVar(ImGuiStyleVar_ChildRounding, 5.0f); | ||||||
|             ImGui::BeginChild("Sub2", ImVec2(0,300), true); |             ImGui::BeginChild("Sub2", ImVec2(0,300), true); | ||||||
|             ImGui::Text("With border"); |             ImGui::Text("With border"); | ||||||
|             ImGui::Columns(2); |             ImGui::Columns(2); | ||||||
| @@ -1851,21 +1851,41 @@ void ImGui::ShowTestWindow(bool* p_open) | |||||||
|  |  | ||||||
| void ImGui::ShowStyleEditor(ImGuiStyle* ref) | void ImGui::ShowStyleEditor(ImGuiStyle* ref) | ||||||
| { | { | ||||||
|  |     // You can pass in a reference ImGuiStyle structure to compare to, revert to and save to (else it compares to an internally stored reference) | ||||||
|     ImGuiStyle& style = ImGui::GetStyle(); |     ImGuiStyle& style = ImGui::GetStyle(); | ||||||
|  |     static ImGuiStyle ref_saved_style; | ||||||
|  |  | ||||||
|     // You can pass in a reference ImGuiStyle structure to compare to, revert to and save to (else it compares to the default style) |     // Default to using internal storage as reference | ||||||
|     const ImGuiStyle default_style; // Default style |     static bool init = true; | ||||||
|     if (ImGui::Button("Revert Style")) |     if (init && ref == NULL) | ||||||
|         style = ref ? *ref : default_style; |         ref_saved_style = style; | ||||||
|  |     init = false; | ||||||
|  |     if (ref == NULL) | ||||||
|  |         ref = &ref_saved_style; | ||||||
|  |  | ||||||
|     if (ref) |     ImGui::PushItemWidth(ImGui::GetWindowWidth() * 0.50f); | ||||||
|  |  | ||||||
|  |     // Default Styles Selector | ||||||
|  |     static int style_idx = 0; | ||||||
|  |     if (ImGui::Combo("Colors##Selector", &style_idx, "Classic\0Dark\0Light\0")) | ||||||
|     { |     { | ||||||
|         ImGui::SameLine(); |         switch (style_idx) | ||||||
|         if (ImGui::Button("Save Style")) |         { | ||||||
|             *ref = style; |         case 0: ImGui::StyleColorsClassic(); break; | ||||||
|  |         case 1: ImGui::StyleColorsDark(); break; | ||||||
|  |         case 2: ImGui::StyleColorsLight(); break; | ||||||
|  |         } | ||||||
|  |         ref_saved_style = style; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     ImGui::PushItemWidth(ImGui::GetWindowWidth() * 0.55f); |     // Save/Revert button | ||||||
|  |     if (ImGui::Button("Save Ref")) | ||||||
|  |         *ref = ref_saved_style = style; | ||||||
|  |     ImGui::SameLine(); | ||||||
|  |     if (ImGui::Button("Revert Ref")) | ||||||
|  |         style = *ref; | ||||||
|  |     ImGui::SameLine(); | ||||||
|  |     ShowHelpMarker("Save/Revert in local non-persistent storage. Default Colors definition are not affected. Use \"Export Colors\" below to save them somewhere."); | ||||||
|  |  | ||||||
|     if (ImGui::TreeNode("Rendering")) |     if (ImGui::TreeNode("Rendering")) | ||||||
|     { |     { | ||||||
| @@ -1883,7 +1903,8 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref) | |||||||
|     { |     { | ||||||
|         ImGui::SliderFloat2("WindowPadding", (float*)&style.WindowPadding, 0.0f, 20.0f, "%.0f"); |         ImGui::SliderFloat2("WindowPadding", (float*)&style.WindowPadding, 0.0f, 20.0f, "%.0f"); | ||||||
|         ImGui::SliderFloat("WindowRounding", &style.WindowRounding, 0.0f, 16.0f, "%.0f"); |         ImGui::SliderFloat("WindowRounding", &style.WindowRounding, 0.0f, 16.0f, "%.0f"); | ||||||
|         ImGui::SliderFloat("ChildWindowRounding", &style.ChildWindowRounding, 0.0f, 16.0f, "%.0f"); |         ImGui::SliderFloat("ChildRounding", &style.ChildRounding, 0.0f, 16.0f, "%.0f"); | ||||||
|  |         ImGui::SliderFloat("PopupRounding", &style.PopupRounding, 0.0f, 16.0f, "%.0f"); | ||||||
|         ImGui::SliderFloat2("FramePadding", (float*)&style.FramePadding, 0.0f, 20.0f, "%.0f"); |         ImGui::SliderFloat2("FramePadding", (float*)&style.FramePadding, 0.0f, 20.0f, "%.0f"); | ||||||
|         ImGui::SliderFloat("FrameRounding", &style.FrameRounding, 0.0f, 16.0f, "%.0f"); |         ImGui::SliderFloat("FrameRounding", &style.FrameRounding, 0.0f, 16.0f, "%.0f"); | ||||||
|         ImGui::SliderFloat2("ItemSpacing", (float*)&style.ItemSpacing, 0.0f, 20.0f, "%.0f"); |         ImGui::SliderFloat2("ItemSpacing", (float*)&style.ItemSpacing, 0.0f, 20.0f, "%.0f"); | ||||||
| @@ -1903,8 +1924,8 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref) | |||||||
|     if (ImGui::TreeNode("Colors")) |     if (ImGui::TreeNode("Colors")) | ||||||
|     { |     { | ||||||
|         static int output_dest = 0; |         static int output_dest = 0; | ||||||
|         static bool output_only_modified = false; |         static bool output_only_modified = true; | ||||||
|         if (ImGui::Button("Copy Colors")) |         if (ImGui::Button("Export Unsaved")) | ||||||
|         { |         { | ||||||
|             if (output_dest == 0) |             if (output_dest == 0) | ||||||
|                 ImGui::LogToClipboard(); |                 ImGui::LogToClipboard(); | ||||||
| @@ -1915,13 +1936,13 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref) | |||||||
|             { |             { | ||||||
|                 const ImVec4& col = style.Colors[i]; |                 const ImVec4& col = style.Colors[i]; | ||||||
|                 const char* name = ImGui::GetStyleColorName(i); |                 const char* name = ImGui::GetStyleColorName(i); | ||||||
|                 if (!output_only_modified || memcmp(&col, (ref ? &ref->Colors[i] : &default_style.Colors[i]), sizeof(ImVec4)) != 0) |                 if (!output_only_modified || memcmp(&col, &ref->Colors[i], sizeof(ImVec4)) != 0) | ||||||
|                     ImGui::LogText("colors[ImGuiCol_%s]%*s= ImVec4(%.2ff, %.2ff, %.2ff, %.2ff);" IM_NEWLINE, name, 23-(int)strlen(name), "", col.x, col.y, col.z, col.w); |                     ImGui::LogText("colors[ImGuiCol_%s]%*s= ImVec4(%.2ff, %.2ff, %.2ff, %.2ff);" IM_NEWLINE, name, 23-(int)strlen(name), "", col.x, col.y, col.z, col.w); | ||||||
|             } |             } | ||||||
|             ImGui::LogFinish(); |             ImGui::LogFinish(); | ||||||
|         } |         } | ||||||
|         ImGui::SameLine(); ImGui::PushItemWidth(120); ImGui::Combo("##output_type", &output_dest, "To Clipboard\0To TTY\0"); ImGui::PopItemWidth(); |         ImGui::SameLine(); ImGui::PushItemWidth(120); ImGui::Combo("##output_type", &output_dest, "To Clipboard\0To TTY\0"); ImGui::PopItemWidth(); | ||||||
|         ImGui::SameLine(); ImGui::Checkbox("Only Modified Fields", &output_only_modified); |         ImGui::SameLine(); ImGui::Checkbox("Only Modified Colors", &output_only_modified); | ||||||
|  |  | ||||||
|         ImGui::Text("Tip: Left-click on colored square to open color picker,\nRight-click to open edit options menu."); |         ImGui::Text("Tip: Left-click on colored square to open color picker,\nRight-click to open edit options menu."); | ||||||
|  |  | ||||||
| @@ -1933,7 +1954,7 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref) | |||||||
|         ImGui::RadioButton("Alpha", &alpha_flags, ImGuiColorEditFlags_AlphaPreview); ImGui::SameLine();  |         ImGui::RadioButton("Alpha", &alpha_flags, ImGuiColorEditFlags_AlphaPreview); ImGui::SameLine();  | ||||||
|         ImGui::RadioButton("Both", &alpha_flags, ImGuiColorEditFlags_AlphaPreviewHalf); |         ImGui::RadioButton("Both", &alpha_flags, ImGuiColorEditFlags_AlphaPreviewHalf); | ||||||
|  |  | ||||||
|         ImGui::BeginChild("#colors", ImVec2(0, 300), true, ImGuiWindowFlags_AlwaysVerticalScrollbar); |         ImGui::BeginChild("#colors", ImVec2(0, 300), true, ImGuiWindowFlags_AlwaysVerticalScrollbar | ImGuiWindowFlags_AlwaysHorizontalScrollbar); | ||||||
|         ImGui::PushItemWidth(-160); |         ImGui::PushItemWidth(-160); | ||||||
|         for (int i = 0; i < ImGuiCol_COUNT; i++) |         for (int i = 0; i < ImGuiCol_COUNT; i++) | ||||||
|         { |         { | ||||||
| @@ -1941,12 +1962,16 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref) | |||||||
|             if (!filter.PassFilter(name)) |             if (!filter.PassFilter(name)) | ||||||
|                 continue; |                 continue; | ||||||
|             ImGui::PushID(i); |             ImGui::PushID(i); | ||||||
|             ImGui::ColorEdit4(name, (float*)&style.Colors[i], ImGuiColorEditFlags_AlphaBar | alpha_flags); |             ImGui::ColorEdit4("##color", (float*)&style.Colors[i], ImGuiColorEditFlags_AlphaBar | alpha_flags); | ||||||
|             if (memcmp(&style.Colors[i], (ref ? &ref->Colors[i] : &default_style.Colors[i]), sizeof(ImVec4)) != 0) |             if (memcmp(&style.Colors[i], &ref->Colors[i], sizeof(ImVec4)) != 0) | ||||||
|             { |             { | ||||||
|                 ImGui::SameLine(); if (ImGui::Button("Revert")) style.Colors[i] = ref ? ref->Colors[i] : default_style.Colors[i]; |                 // Tips: in a real user application, you may want to merge and use an icon font into the main font, so instead of "Save"/"Revert" you'd use icons. | ||||||
|                 if (ref) { ImGui::SameLine(); if (ImGui::Button("Save")) ref->Colors[i] = style.Colors[i]; } |                 // Read the FAQ and extra_fonts/README.txt about using icon fonts. It's really easy and super convenient! | ||||||
|  |                 ImGui::SameLine(0.0f, style.ItemInnerSpacing.x); if (ImGui::Button("Save")) ref->Colors[i] = style.Colors[i]; | ||||||
|  |                 ImGui::SameLine(0.0f, style.ItemInnerSpacing.x); if (ImGui::Button("Revert")) style.Colors[i] = ref->Colors[i]; | ||||||
|             } |             } | ||||||
|  |             ImGui::SameLine(0.0f, style.ItemInnerSpacing.x); | ||||||
|  |             ImGui::TextUnformatted(name); | ||||||
|             ImGui::PopID(); |             ImGui::PopID(); | ||||||
|         } |         } | ||||||
|         ImGui::PopItemWidth(); |         ImGui::PopItemWidth(); | ||||||
| @@ -2112,8 +2137,15 @@ static void ShowExampleMenuFile() | |||||||
|     } |     } | ||||||
|     if (ImGui::BeginMenu("Colors")) |     if (ImGui::BeginMenu("Colors")) | ||||||
|     { |     { | ||||||
|  |         ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(0,0)); | ||||||
|         for (int i = 0; i < ImGuiCol_COUNT; i++) |         for (int i = 0; i < ImGuiCol_COUNT; i++) | ||||||
|             ImGui::MenuItem(ImGui::GetStyleColorName((ImGuiCol)i)); |         { | ||||||
|  |             const char* name = ImGui::GetStyleColorName((ImGuiCol)i); | ||||||
|  |             ImGui::ColorButton(name, ImGui::GetStyleColorVec4((ImGuiCol)i)); | ||||||
|  |             ImGui::SameLine(); | ||||||
|  |             ImGui::MenuItem(name); | ||||||
|  |         } | ||||||
|  |         ImGui::PopStyleVar(); | ||||||
|         ImGui::EndMenu(); |         ImGui::EndMenu(); | ||||||
|     } |     } | ||||||
|     if (ImGui::BeginMenu("Disabled", false)) // Disabled |     if (ImGui::BeginMenu("Disabled", false)) // Disabled | ||||||
|   | |||||||
| @@ -130,12 +130,12 @@ void ImGui::StyleColorsClassic(ImGuiStyle* dst) | |||||||
|     colors[ImGuiCol_TextDisabled]           = ImVec4(0.60f, 0.60f, 0.60f, 1.00f); |     colors[ImGuiCol_TextDisabled]           = ImVec4(0.60f, 0.60f, 0.60f, 1.00f); | ||||||
|     colors[ImGuiCol_WindowBg]               = ImVec4(0.00f, 0.00f, 0.00f, 0.70f); |     colors[ImGuiCol_WindowBg]               = ImVec4(0.00f, 0.00f, 0.00f, 0.70f); | ||||||
|     colors[ImGuiCol_ChildWindowBg]          = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); |     colors[ImGuiCol_ChildWindowBg]          = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); | ||||||
|     colors[ImGuiCol_PopupBg]                = ImVec4(0.05f, 0.05f, 0.10f, 0.90f); |     colors[ImGuiCol_PopupBg]                = ImVec4(0.11f, 0.11f, 0.14f, 0.92f); | ||||||
|     colors[ImGuiCol_Border]                 = ImVec4(0.70f, 0.70f, 0.70f, 0.40f); |     colors[ImGuiCol_Border]                 = ImVec4(0.70f, 0.70f, 0.70f, 0.27f); | ||||||
|     colors[ImGuiCol_BorderShadow]           = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); |     colors[ImGuiCol_BorderShadow]           = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); | ||||||
|     colors[ImGuiCol_FrameBg]                = ImVec4(0.80f, 0.80f, 0.80f, 0.30f);   // Background of checkbox, radio button, plot, slider, text input |     colors[ImGuiCol_FrameBg]                = ImVec4(0.43f, 0.43f, 0.43f, 0.39f); | ||||||
|     colors[ImGuiCol_FrameBgHovered]         = ImVec4(0.90f, 0.80f, 0.80f, 0.40f); |     colors[ImGuiCol_FrameBgHovered]         = ImVec4(0.47f, 0.47f, 0.69f, 0.40f); | ||||||
|     colors[ImGuiCol_FrameBgActive]          = ImVec4(0.90f, 0.65f, 0.65f, 0.45f); |     colors[ImGuiCol_FrameBgActive]          = ImVec4(0.42f, 0.41f, 0.64f, 0.69f); | ||||||
|     colors[ImGuiCol_TitleBg]                = ImVec4(0.27f, 0.27f, 0.54f, 0.83f); |     colors[ImGuiCol_TitleBg]                = ImVec4(0.27f, 0.27f, 0.54f, 0.83f); | ||||||
|     colors[ImGuiCol_TitleBgActive]          = ImVec4(0.32f, 0.32f, 0.63f, 0.87f); |     colors[ImGuiCol_TitleBgActive]          = ImVec4(0.32f, 0.32f, 0.63f, 0.87f); | ||||||
|     colors[ImGuiCol_TitleBgCollapsed]       = ImVec4(0.40f, 0.40f, 0.80f, 0.20f); |     colors[ImGuiCol_TitleBgCollapsed]       = ImVec4(0.40f, 0.40f, 0.80f, 0.20f); | ||||||
| @@ -143,23 +143,22 @@ void ImGui::StyleColorsClassic(ImGuiStyle* dst) | |||||||
|     colors[ImGuiCol_ScrollbarBg]            = ImVec4(0.20f, 0.25f, 0.30f, 0.60f); |     colors[ImGuiCol_ScrollbarBg]            = ImVec4(0.20f, 0.25f, 0.30f, 0.60f); | ||||||
|     colors[ImGuiCol_ScrollbarGrab]          = ImVec4(0.40f, 0.40f, 0.80f, 0.30f); |     colors[ImGuiCol_ScrollbarGrab]          = ImVec4(0.40f, 0.40f, 0.80f, 0.30f); | ||||||
|     colors[ImGuiCol_ScrollbarGrabHovered]   = ImVec4(0.40f, 0.40f, 0.80f, 0.40f); |     colors[ImGuiCol_ScrollbarGrabHovered]   = ImVec4(0.40f, 0.40f, 0.80f, 0.40f); | ||||||
|     colors[ImGuiCol_ScrollbarGrabActive]    = ImVec4(0.80f, 0.50f, 0.50f, 0.40f); |     colors[ImGuiCol_ScrollbarGrabActive]    = ImVec4(0.41f, 0.39f, 0.80f, 0.60f); | ||||||
|     colors[ImGuiCol_ComboBg]                = ImVec4(0.20f, 0.20f, 0.20f, 0.99f); |  | ||||||
|     colors[ImGuiCol_CheckMark]              = ImVec4(0.90f, 0.90f, 0.90f, 0.50f); |     colors[ImGuiCol_CheckMark]              = ImVec4(0.90f, 0.90f, 0.90f, 0.50f); | ||||||
|     colors[ImGuiCol_SliderGrab]             = ImVec4(1.00f, 1.00f, 1.00f, 0.30f); |     colors[ImGuiCol_SliderGrab]             = ImVec4(1.00f, 1.00f, 1.00f, 0.30f); | ||||||
|     colors[ImGuiCol_SliderGrabActive]       = ImVec4(0.80f, 0.50f, 0.50f, 1.00f); |     colors[ImGuiCol_SliderGrabActive]       = ImVec4(0.41f, 0.39f, 0.80f, 0.60f); | ||||||
|     colors[ImGuiCol_Button]                 = ImVec4(0.67f, 0.40f, 0.40f, 0.60f); |     colors[ImGuiCol_Button]                 = ImVec4(0.35f, 0.40f, 0.61f, 0.62f); | ||||||
|     colors[ImGuiCol_ButtonHovered]          = ImVec4(0.67f, 0.40f, 0.40f, 1.00f); |     colors[ImGuiCol_ButtonHovered]          = ImVec4(0.40f, 0.48f, 0.71f, 0.79f); | ||||||
|     colors[ImGuiCol_ButtonActive]           = ImVec4(0.80f, 0.50f, 0.50f, 1.00f); |     colors[ImGuiCol_ButtonActive]           = ImVec4(0.46f, 0.54f, 0.80f, 1.00f); | ||||||
|     colors[ImGuiCol_Header]                 = ImVec4(0.40f, 0.40f, 0.90f, 0.45f); |     colors[ImGuiCol_Header]                 = ImVec4(0.40f, 0.40f, 0.90f, 0.45f); | ||||||
|     colors[ImGuiCol_HeaderHovered]          = ImVec4(0.45f, 0.45f, 0.90f, 0.80f); |     colors[ImGuiCol_HeaderHovered]          = ImVec4(0.45f, 0.45f, 0.90f, 0.80f); | ||||||
|     colors[ImGuiCol_HeaderActive]           = ImVec4(0.53f, 0.53f, 0.87f, 0.80f); |     colors[ImGuiCol_HeaderActive]           = ImVec4(0.53f, 0.53f, 0.87f, 0.80f); | ||||||
|     colors[ImGuiCol_Separator]              = ImVec4(0.50f, 0.50f, 0.50f, 1.00f); |     colors[ImGuiCol_Separator]              = ImVec4(0.50f, 0.50f, 0.50f, 1.00f); | ||||||
|     colors[ImGuiCol_SeparatorHovered]       = ImVec4(0.60f, 0.60f, 0.70f, 1.00f); |     colors[ImGuiCol_SeparatorHovered]       = ImVec4(0.60f, 0.60f, 0.70f, 1.00f); | ||||||
|     colors[ImGuiCol_SeparatorActive]        = ImVec4(0.70f, 0.70f, 0.90f, 1.00f); |     colors[ImGuiCol_SeparatorActive]        = ImVec4(0.70f, 0.70f, 0.90f, 1.00f); | ||||||
|     colors[ImGuiCol_ResizeGrip]             = ImVec4(1.00f, 1.00f, 1.00f, 0.30f); |     colors[ImGuiCol_ResizeGrip]             = ImVec4(1.00f, 1.00f, 1.00f, 0.16f); | ||||||
|     colors[ImGuiCol_ResizeGripHovered]      = ImVec4(1.00f, 1.00f, 1.00f, 0.60f); |     colors[ImGuiCol_ResizeGripHovered]      = ImVec4(0.78f, 0.82f, 1.00f, 0.60f); | ||||||
|     colors[ImGuiCol_ResizeGripActive]       = ImVec4(1.00f, 1.00f, 1.00f, 0.90f); |     colors[ImGuiCol_ResizeGripActive]       = ImVec4(0.78f, 0.82f, 1.00f, 0.90f); | ||||||
|     colors[ImGuiCol_CloseButton]            = ImVec4(0.50f, 0.50f, 0.90f, 0.50f); |     colors[ImGuiCol_CloseButton]            = ImVec4(0.50f, 0.50f, 0.90f, 0.50f); | ||||||
|     colors[ImGuiCol_CloseButtonHovered]     = ImVec4(0.70f, 0.70f, 0.90f, 0.60f); |     colors[ImGuiCol_CloseButtonHovered]     = ImVec4(0.70f, 0.70f, 0.90f, 0.60f); | ||||||
|     colors[ImGuiCol_CloseButtonActive]      = ImVec4(0.70f, 0.70f, 0.70f, 1.00f); |     colors[ImGuiCol_CloseButtonActive]      = ImVec4(0.70f, 0.70f, 0.70f, 1.00f); | ||||||
| @@ -177,23 +176,23 @@ void ImGui::StyleColorsDark(ImGuiStyle* dst) | |||||||
|     ImVec4* colors = style->Colors; |     ImVec4* colors = style->Colors; | ||||||
|  |  | ||||||
|     colors[ImGuiCol_Text]                   = ImVec4(1.00f, 1.00f, 1.00f, 1.00f); |     colors[ImGuiCol_Text]                   = ImVec4(1.00f, 1.00f, 1.00f, 1.00f); | ||||||
|     colors[ImGuiCol_TextDisabled]           = ImVec4(0.40f, 0.40f, 0.40f, 1.00f); |     colors[ImGuiCol_TextDisabled]           = ImVec4(0.50f, 0.50f, 0.50f, 1.00f); | ||||||
|     colors[ImGuiCol_WindowBg]               = ImVec4(0.06f, 0.06f, 0.06f, 0.94f); |     colors[ImGuiCol_WindowBg]               = ImVec4(0.06f, 0.06f, 0.06f, 0.94f); | ||||||
|     colors[ImGuiCol_Border]                 = ImVec4(1.00f, 1.00f, 1.00f, 0.19f); |  | ||||||
|     colors[ImGuiCol_ChildWindowBg]          = ImVec4(1.00f, 1.00f, 1.00f, 0.00f); |     colors[ImGuiCol_ChildWindowBg]          = ImVec4(1.00f, 1.00f, 1.00f, 0.00f); | ||||||
|     colors[ImGuiCol_PopupBg]                = ImVec4(0.00f, 0.00f, 0.00f, 0.94f); |     colors[ImGuiCol_PopupBg]                = ImVec4(0.08f, 0.08f, 0.08f, 0.94f); | ||||||
|  |     colors[ImGuiCol_Border]                 = ImVec4(0.86f, 0.86f, 1.00f, 0.20f); | ||||||
|  |     colors[ImGuiCol_BorderShadow]           = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); | ||||||
|     colors[ImGuiCol_FrameBg]                = ImVec4(0.16f, 0.29f, 0.48f, 0.54f); |     colors[ImGuiCol_FrameBg]                = ImVec4(0.16f, 0.29f, 0.48f, 0.54f); | ||||||
|     colors[ImGuiCol_FrameBgHovered]         = ImVec4(0.26f, 0.59f, 0.98f, 0.40f); |     colors[ImGuiCol_FrameBgHovered]         = ImVec4(0.26f, 0.59f, 0.98f, 0.40f); | ||||||
|     colors[ImGuiCol_FrameBgActive]          = ImVec4(0.26f, 0.59f, 0.98f, 0.67f); |     colors[ImGuiCol_FrameBgActive]          = ImVec4(0.26f, 0.59f, 0.98f, 0.67f); | ||||||
|     colors[ImGuiCol_TitleBg]                = ImVec4(0.04f, 0.04f, 0.04f, 1.00f); |     colors[ImGuiCol_TitleBg]                = ImVec4(0.04f, 0.04f, 0.04f, 1.00f); | ||||||
|     colors[ImGuiCol_TitleBgActive]          = ImVec4(0.18f, 0.18f, 0.18f, 1.00f); |     colors[ImGuiCol_TitleBgActive]          = ImVec4(0.16f, 0.29f, 0.48f, 1.00f); | ||||||
|     colors[ImGuiCol_TitleBgCollapsed]       = ImVec4(0.00f, 0.00f, 0.00f, 0.51f); |     colors[ImGuiCol_TitleBgCollapsed]       = ImVec4(0.00f, 0.00f, 0.00f, 0.51f); | ||||||
|     colors[ImGuiCol_MenuBarBg]              = ImVec4(0.14f, 0.14f, 0.14f, 1.00f); |     colors[ImGuiCol_MenuBarBg]              = ImVec4(0.14f, 0.14f, 0.14f, 1.00f); | ||||||
|     colors[ImGuiCol_ScrollbarBg]            = ImVec4(0.02f, 0.02f, 0.02f, 0.53f); |     colors[ImGuiCol_ScrollbarBg]            = ImVec4(0.02f, 0.02f, 0.02f, 0.53f); | ||||||
|     colors[ImGuiCol_ScrollbarGrab]          = ImVec4(0.31f, 0.31f, 0.31f, 1.00f); |     colors[ImGuiCol_ScrollbarGrab]          = ImVec4(0.31f, 0.31f, 0.31f, 1.00f); | ||||||
|     colors[ImGuiCol_ScrollbarGrabHovered]   = ImVec4(0.41f, 0.41f, 0.41f, 1.00f); |     colors[ImGuiCol_ScrollbarGrabHovered]   = ImVec4(0.41f, 0.41f, 0.41f, 1.00f); | ||||||
|     colors[ImGuiCol_ScrollbarGrabActive]    = ImVec4(0.51f, 0.51f, 0.51f, 1.00f); |     colors[ImGuiCol_ScrollbarGrabActive]    = ImVec4(0.51f, 0.51f, 0.51f, 1.00f); | ||||||
|     colors[ImGuiCol_ComboBg]                = ImVec4(0.14f, 0.14f, 0.14f, 0.99f); |  | ||||||
|     colors[ImGuiCol_CheckMark]              = ImVec4(0.26f, 0.59f, 0.98f, 1.00f); |     colors[ImGuiCol_CheckMark]              = ImVec4(0.26f, 0.59f, 0.98f, 1.00f); | ||||||
|     colors[ImGuiCol_SliderGrab]             = ImVec4(0.24f, 0.52f, 0.88f, 1.00f); |     colors[ImGuiCol_SliderGrab]             = ImVec4(0.24f, 0.52f, 0.88f, 1.00f); | ||||||
|     colors[ImGuiCol_SliderGrabActive]       = ImVec4(0.26f, 0.59f, 0.98f, 1.00f); |     colors[ImGuiCol_SliderGrabActive]       = ImVec4(0.26f, 0.59f, 0.98f, 1.00f); | ||||||
| @@ -220,6 +219,58 @@ void ImGui::StyleColorsDark(ImGuiStyle* dst) | |||||||
|     colors[ImGuiCol_ModalWindowDarkening]   = ImVec4(0.80f, 0.80f, 0.80f, 0.35f); |     colors[ImGuiCol_ModalWindowDarkening]   = ImVec4(0.80f, 0.80f, 0.80f, 0.35f); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void ImGui::StyleColorsLight(ImGuiStyle* dst) | ||||||
|  | { | ||||||
|  |     ImGuiStyle* style = dst ? dst : &ImGui::GetStyle(); | ||||||
|  |     ImVec4* colors = style->Colors; | ||||||
|  |  | ||||||
|  |     colors[ImGuiCol_Text]                   = ImVec4(0.00f, 0.00f, 0.00f, 1.00f); | ||||||
|  |     colors[ImGuiCol_TextDisabled]           = ImVec4(0.60f, 0.60f, 0.60f, 1.00f); | ||||||
|  |     //colors[ImGuiCol_TextHovered]          = ImVec4(1.00f, 1.00f, 1.00f, 1.00f); | ||||||
|  |     //colors[ImGuiCol_TextActive]           = ImVec4(1.00f, 1.00f, 0.00f, 1.00f); | ||||||
|  |     colors[ImGuiCol_WindowBg]               = ImVec4(0.94f, 0.94f, 0.94f, 1.00f); | ||||||
|  |     colors[ImGuiCol_ChildWindowBg]          = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); | ||||||
|  |     colors[ImGuiCol_PopupBg]                = ImVec4(1.00f, 1.00f, 1.00f, 0.94f); | ||||||
|  |     colors[ImGuiCol_Border]                 = ImVec4(0.00f, 0.00f, 0.00f, 0.30f); | ||||||
|  |     colors[ImGuiCol_BorderShadow]           = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); | ||||||
|  |     colors[ImGuiCol_FrameBg]                = ImVec4(1.00f, 1.00f, 1.00f, 1.00f); | ||||||
|  |     colors[ImGuiCol_FrameBgHovered]         = ImVec4(0.26f, 0.59f, 0.98f, 0.40f); | ||||||
|  |     colors[ImGuiCol_FrameBgActive]          = ImVec4(0.26f, 0.59f, 0.98f, 0.67f); | ||||||
|  |     colors[ImGuiCol_TitleBg]                = ImVec4(0.96f, 0.96f, 0.96f, 1.00f); | ||||||
|  |     colors[ImGuiCol_TitleBgCollapsed]       = ImVec4(1.00f, 1.00f, 1.00f, 0.51f); | ||||||
|  |     colors[ImGuiCol_TitleBgActive]          = ImVec4(0.82f, 0.82f, 0.82f, 1.00f); | ||||||
|  |     colors[ImGuiCol_MenuBarBg]              = ImVec4(0.86f, 0.86f, 0.86f, 1.00f); | ||||||
|  |     colors[ImGuiCol_ScrollbarBg]            = ImVec4(0.98f, 0.98f, 0.98f, 0.53f); | ||||||
|  |     colors[ImGuiCol_ScrollbarGrab]          = ImVec4(0.69f, 0.69f, 0.69f, 0.80f); | ||||||
|  |     colors[ImGuiCol_ScrollbarGrabHovered]   = ImVec4(0.49f, 0.49f, 0.49f, 0.80f); | ||||||
|  |     colors[ImGuiCol_ScrollbarGrabActive]    = ImVec4(0.49f, 0.49f, 0.49f, 1.00f); | ||||||
|  |     colors[ImGuiCol_CheckMark]              = ImVec4(0.26f, 0.59f, 0.98f, 1.00f); | ||||||
|  |     colors[ImGuiCol_SliderGrab]             = ImVec4(0.26f, 0.59f, 0.98f, 0.78f); | ||||||
|  |     colors[ImGuiCol_SliderGrabActive]       = ImVec4(0.46f, 0.54f, 0.80f, 0.60f); | ||||||
|  |     colors[ImGuiCol_Button]                 = ImVec4(0.26f, 0.59f, 0.98f, 0.40f); | ||||||
|  |     colors[ImGuiCol_ButtonHovered]          = ImVec4(0.26f, 0.59f, 0.98f, 1.00f); | ||||||
|  |     colors[ImGuiCol_ButtonActive]           = ImVec4(0.06f, 0.53f, 0.98f, 1.00f); | ||||||
|  |     colors[ImGuiCol_Header]                 = ImVec4(0.26f, 0.59f, 0.98f, 0.31f); | ||||||
|  |     colors[ImGuiCol_HeaderHovered]          = ImVec4(0.26f, 0.59f, 0.98f, 0.80f); | ||||||
|  |     colors[ImGuiCol_HeaderActive]           = ImVec4(0.26f, 0.59f, 0.98f, 1.00f); | ||||||
|  |     colors[ImGuiCol_Separator]              = ImVec4(0.39f, 0.39f, 0.39f, 1.00f); | ||||||
|  |     colors[ImGuiCol_SeparatorHovered]       = ImVec4(0.26f, 0.59f, 0.98f, 0.78f); | ||||||
|  |     colors[ImGuiCol_SeparatorActive]        = ImVec4(0.26f, 0.59f, 0.98f, 1.00f); | ||||||
|  |     colors[ImGuiCol_ResizeGrip]             = ImVec4(0.80f, 0.80f, 0.80f, 0.56f); | ||||||
|  |     colors[ImGuiCol_ResizeGripHovered]      = ImVec4(0.26f, 0.59f, 0.98f, 0.67f); | ||||||
|  |     colors[ImGuiCol_ResizeGripActive]       = ImVec4(0.26f, 0.59f, 0.98f, 0.95f); | ||||||
|  |     colors[ImGuiCol_CloseButton]            = ImVec4(0.59f, 0.59f, 0.59f, 0.50f); | ||||||
|  |     colors[ImGuiCol_CloseButtonHovered]     = ImVec4(0.98f, 0.39f, 0.36f, 1.00f); | ||||||
|  |     colors[ImGuiCol_CloseButtonActive]      = ImVec4(0.98f, 0.39f, 0.36f, 1.00f); | ||||||
|  |     colors[ImGuiCol_PlotLines]              = ImVec4(0.39f, 0.39f, 0.39f, 1.00f); | ||||||
|  |     colors[ImGuiCol_PlotLinesHovered]       = ImVec4(1.00f, 0.43f, 0.35f, 1.00f); | ||||||
|  |     colors[ImGuiCol_PlotHistogram]          = ImVec4(0.90f, 0.70f, 0.00f, 1.00f); | ||||||
|  |     colors[ImGuiCol_PlotHistogramHovered]   = ImVec4(1.00f, 0.45f, 0.00f, 1.00f); | ||||||
|  |     colors[ImGuiCol_TextSelectedBg]         = ImVec4(0.26f, 0.59f, 0.98f, 0.35f); | ||||||
|  |     colors[ImGuiCol_ModalWindowDarkening]   = ImVec4(0.20f, 0.20f, 0.20f, 0.35f); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //----------------------------------------------------------------------------- | //----------------------------------------------------------------------------- | ||||||
| // ImDrawList | // ImDrawList | ||||||
| //----------------------------------------------------------------------------- | //----------------------------------------------------------------------------- | ||||||
|   | |||||||
| @@ -199,7 +199,8 @@ enum ImGuiColumnsFlags_ | |||||||
|     ImGuiColumnsFlags_NoBorder              = 1 << 0,   // Disable column dividers |     ImGuiColumnsFlags_NoBorder              = 1 << 0,   // Disable column dividers | ||||||
|     ImGuiColumnsFlags_NoResize              = 1 << 1,   // Disable resizing columns when clicking on the dividers |     ImGuiColumnsFlags_NoResize              = 1 << 1,   // Disable resizing columns when clicking on the dividers | ||||||
|     ImGuiColumnsFlags_NoPreserveWidths      = 1 << 2,   // Disable column width preservation when adjusting columns |     ImGuiColumnsFlags_NoPreserveWidths      = 1 << 2,   // Disable column width preservation when adjusting columns | ||||||
|     ImGuiColumnsFlags_NoForceWithinWindow   = 1 << 3    // Disable forcing columns to fit within window |     ImGuiColumnsFlags_NoForceWithinWindow   = 1 << 3,   // Disable forcing columns to fit within window | ||||||
|  |     ImGuiColumnsFlags_GrowParentContentsSize= 1 << 4,   // (WIP) Restore pre-1.51 behavior of extending the parent window contents size but _without affecting the columns width at all_. Will eventually remove. | ||||||
| }; | }; | ||||||
|  |  | ||||||
| enum ImGuiSelectableFlagsPrivate_ | enum ImGuiSelectableFlagsPrivate_ | ||||||
| @@ -714,17 +715,18 @@ struct IMGUI_API ImGuiWindow | |||||||
|     ImVec2                  SizeContents;                       // Size of contents (== extents reach of the drawing cursor) from previous frame |     ImVec2                  SizeContents;                       // Size of contents (== extents reach of the drawing cursor) from previous frame | ||||||
|     ImVec2                  SizeContentsExplicit;               // Size of contents explicitly set by the user via SetNextWindowContentSize() |     ImVec2                  SizeContentsExplicit;               // Size of contents explicitly set by the user via SetNextWindowContentSize() | ||||||
|     ImRect                  ContentsRegionRect;                 // Maximum visible content position in window coordinates. ~~ (SizeContentsExplicit ? SizeContentsExplicit : Size - ScrollbarSizes) - CursorStartPos, per axis |     ImRect                  ContentsRegionRect;                 // Maximum visible content position in window coordinates. ~~ (SizeContentsExplicit ? SizeContentsExplicit : Size - ScrollbarSizes) - CursorStartPos, per axis | ||||||
|     ImVec2                  WindowPadding;                      // Window padding at the time of begin. We need to lock it, in particular manipulation of the ShowBorder would have an effect |     ImVec2                  WindowPadding;                      // Window padding at the time of begin. | ||||||
|  |     float                   WindowRounding;                     // Window rounding at the time of begin. | ||||||
|  |     float                   WindowBorderSize;                   // Window border size at the time of begin. | ||||||
|     ImGuiID                 MoveId;                             // == window->GetID("#MOVE") |     ImGuiID                 MoveId;                             // == window->GetID("#MOVE") | ||||||
|     ImVec2                  Scroll; |     ImVec2                  Scroll; | ||||||
|     ImVec2                  ScrollTarget;                       // target scroll position. stored as cursor position with scrolling canceled out, so the highest point is always 0.0f. (FLT_MAX for no change) |     ImVec2                  ScrollTarget;                       // target scroll position. stored as cursor position with scrolling canceled out, so the highest point is always 0.0f. (FLT_MAX for no change) | ||||||
|     ImVec2                  ScrollTargetCenterRatio;            // 0.0f = scroll so that target position is at top, 0.5f = scroll so that target position is centered |     ImVec2                  ScrollTargetCenterRatio;            // 0.0f = scroll so that target position is at top, 0.5f = scroll so that target position is centered | ||||||
|     bool                    ScrollbarX, ScrollbarY; |     bool                    ScrollbarX, ScrollbarY; | ||||||
|     ImVec2                  ScrollbarSizes; |     ImVec2                  ScrollbarSizes; | ||||||
|     float                   BorderSize; |  | ||||||
|     bool                    Active;                             // Set to true on Begin() |     bool                    Active;                             // Set to true on Begin() | ||||||
|     bool                    WasActive; |     bool                    WasActive; | ||||||
|     bool                    Accessed;                           // Set to true when any widget access the current window |     bool                    WriteAccessed;                      // Set to true when any widget access the current window | ||||||
|     bool                    Collapsed;                          // Set when collapsing window to become only title-bar |     bool                    Collapsed;                          // Set when collapsing window to become only title-bar | ||||||
|     bool                    SkipItems;                          // Set when items can safely be all clipped (e.g. window not visible or collapsed) |     bool                    SkipItems;                          // Set when items can safely be all clipped (e.g. window not visible or collapsed) | ||||||
|     bool                    Appearing;                          // Set during the frame where the window is appearing (or re-appearing) |     bool                    Appearing;                          // Set during the frame where the window is appearing (or re-appearing) | ||||||
| @@ -805,7 +807,7 @@ namespace ImGui | |||||||
|     // - ImGui::NewFrame() has never been called, which is illegal. |     // - ImGui::NewFrame() has never been called, which is illegal. | ||||||
|     // - You are calling ImGui functions after ImGui::Render() and before the next ImGui::NewFrame(), which is also illegal. |     // - You are calling ImGui functions after ImGui::Render() and before the next ImGui::NewFrame(), which is also illegal. | ||||||
|     inline    ImGuiWindow*  GetCurrentWindowRead()      { ImGuiContext& g = *GImGui; return g.CurrentWindow; } |     inline    ImGuiWindow*  GetCurrentWindowRead()      { ImGuiContext& g = *GImGui; return g.CurrentWindow; } | ||||||
|     inline    ImGuiWindow*  GetCurrentWindow()          { ImGuiContext& g = *GImGui; g.CurrentWindow->Accessed = true; return g.CurrentWindow; } |     inline    ImGuiWindow*  GetCurrentWindow()          { ImGuiContext& g = *GImGui; g.CurrentWindow->WriteAccessed = true; return g.CurrentWindow; } | ||||||
|     IMGUI_API ImGuiWindow*  GetParentWindow(); |     IMGUI_API ImGuiWindow*  GetParentWindow(); | ||||||
|     IMGUI_API ImGuiWindow*  FindWindowByName(const char* name); |     IMGUI_API ImGuiWindow*  FindWindowByName(const char* name); | ||||||
|     IMGUI_API void          FocusWindow(ImGuiWindow* window); |     IMGUI_API void          FocusWindow(ImGuiWindow* window); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user