mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-30 20:51:06 +01:00 
			
		
		
		
	Internals: Renamed CloseInactivePopups() to a better ClosePopupsOverWindow(). Exposed in imgui_internal.h
This commit is contained in:
		
							
								
								
									
										11
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -669,7 +669,6 @@ static void             MarkIniSettingsDirty(ImGuiWindow* window); | |||||||
|  |  | ||||||
| static ImRect           GetViewportRect(); | static ImRect           GetViewportRect(); | ||||||
|  |  | ||||||
| static void             CloseInactivePopups(ImGuiWindow* ref_window); |  | ||||||
| static void             ClosePopupToLevel(int remaining); | static void             ClosePopupToLevel(int remaining); | ||||||
| static ImGuiWindow*     GetFrontMostModalRootWindow(); | static ImGuiWindow*     GetFrontMostModalRootWindow(); | ||||||
|  |  | ||||||
| @@ -2549,7 +2548,7 @@ void ImGui::NewFrame() | |||||||
|     // But in order to allow the user to call NewFrame() multiple times without calling Render(), we are doing an explicit clear. |     // But in order to allow the user to call NewFrame() multiple times without calling Render(), we are doing an explicit clear. | ||||||
|     g.CurrentWindowStack.resize(0); |     g.CurrentWindowStack.resize(0); | ||||||
|     g.CurrentPopupStack.resize(0); |     g.CurrentPopupStack.resize(0); | ||||||
|     CloseInactivePopups(g.NavWindow); |     ClosePopupsOverWindow(g.NavWindow); | ||||||
|  |  | ||||||
|     // Create implicit window - we will only render it if the user has added something to it. |     // Create implicit window - we will only render it if the user has added something to it. | ||||||
|     // We don't use "Debug" to avoid colliding with user trying to create a "Debug" window with custom flags. |     // We don't use "Debug" to avoid colliding with user trying to create a "Debug" window with custom flags. | ||||||
| @@ -3000,7 +2999,7 @@ void ImGui::EndFrame() | |||||||
|             } |             } | ||||||
|  |  | ||||||
|             // With right mouse button we close popups without changing focus |             // With right mouse button we close popups without changing focus | ||||||
|             // (The left mouse button path calls FocusWindow which will lead NewFrame->CloseInactivePopups to trigger) |             // (The left mouse button path calls FocusWindow which will lead NewFrame->ClosePopupsOverWindow to trigger) | ||||||
|             if (g.IO.MouseClicked[1]) |             if (g.IO.MouseClicked[1]) | ||||||
|             { |             { | ||||||
|                 // Find the top-most window between HoveredWindow and the front most Modal Window. |                 // Find the top-most window between HoveredWindow and the front most Modal Window. | ||||||
| @@ -3017,7 +3016,7 @@ void ImGui::EndFrame() | |||||||
|                     if (window == g.HoveredWindow) |                     if (window == g.HoveredWindow) | ||||||
|                         hovered_window_above_modal = true; |                         hovered_window_above_modal = true; | ||||||
|                 } |                 } | ||||||
|                 CloseInactivePopups(hovered_window_above_modal ? g.HoveredWindow : modal); |                 ClosePopupsOverWindow(hovered_window_above_modal ? g.HoveredWindow : modal); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -3772,7 +3771,7 @@ void ImGui::OpenPopupEx(ImGuiID id) | |||||||
|         else |         else | ||||||
|             g.OpenPopupStack[current_stack_size] = popup_ref; |             g.OpenPopupStack[current_stack_size] = popup_ref; | ||||||
|  |  | ||||||
|         // When reopening a popup we first refocus its parent, otherwise if its parent is itself a popup it would get closed by CloseInactivePopups(). |         // When reopening a popup we first refocus its parent, otherwise if its parent is itself a popup it would get closed by ClosePopupsOverWindow(). | ||||||
|         // This is equivalent to what ClosePopupToLevel() does. |         // This is equivalent to what ClosePopupToLevel() does. | ||||||
|         //if (g.OpenPopupStack[current_stack_size].PopupId == id) |         //if (g.OpenPopupStack[current_stack_size].PopupId == id) | ||||||
|         //    FocusWindow(parent_window); |         //    FocusWindow(parent_window); | ||||||
| @@ -3785,7 +3784,7 @@ void ImGui::OpenPopup(const char* str_id) | |||||||
|     OpenPopupEx(g.CurrentWindow->GetID(str_id)); |     OpenPopupEx(g.CurrentWindow->GetID(str_id)); | ||||||
| } | } | ||||||
|  |  | ||||||
| static void CloseInactivePopups(ImGuiWindow* ref_window) | void ImGui::ClosePopupsOverWindow(ImGuiWindow* ref_window) | ||||||
| { | { | ||||||
|     ImGuiContext& g = *GImGui; |     ImGuiContext& g = *GImGui; | ||||||
|     if (g.OpenPopupStack.empty()) |     if (g.OpenPopupStack.empty()) | ||||||
|   | |||||||
| @@ -894,6 +894,7 @@ namespace ImGui | |||||||
|  |  | ||||||
|     IMGUI_API void          OpenPopupEx(ImGuiID id); |     IMGUI_API void          OpenPopupEx(ImGuiID id); | ||||||
|     IMGUI_API void          ClosePopup(ImGuiID id); |     IMGUI_API void          ClosePopup(ImGuiID id); | ||||||
|  |     IMGUI_API void          ClosePopupsOverWindow(ImGuiWindow* ref_window); | ||||||
|     IMGUI_API bool          IsPopupOpen(ImGuiID id); |     IMGUI_API bool          IsPopupOpen(ImGuiID id); | ||||||
|     IMGUI_API bool          BeginPopupEx(ImGuiID id, ImGuiWindowFlags extra_flags); |     IMGUI_API bool          BeginPopupEx(ImGuiID id, ImGuiWindowFlags extra_flags); | ||||||
|     IMGUI_API void          BeginTooltipEx(ImGuiWindowFlags extra_flags, bool override_previous_tooltip = true); |     IMGUI_API void          BeginTooltipEx(ImGuiWindowFlags extra_flags, bool override_previous_tooltip = true); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user