mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Internals: Popup: Separating MousePosOnOpen and PopupPosOnOpen. They are equal in the master branch but different in the navigation branch.
This commit is contained in:
		| @@ -3725,7 +3725,9 @@ void ImGui::OpenPopupEx(ImGuiID id, bool reopen_existing) | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     ImGuiWindow* parent_window = g.CurrentWindow; | ||||
|     int current_stack_size = g.CurrentPopupStack.Size; | ||||
|     ImGuiPopupRef popup_ref = ImGuiPopupRef(id, parent_window, parent_window->GetID("##Menus"), g.IO.MousePos); // Tagged as new ref because constructor sets Window to NULL. | ||||
|     ImVec2 mouse_pos = g.IO.MousePos; | ||||
|     ImVec2 popup_pos = mouse_pos; // NB: In the Navigation branch popup_pos may not use mouse_pos. | ||||
|     ImGuiPopupRef popup_ref = ImGuiPopupRef(id, parent_window, parent_window->GetID("##Menus"), popup_pos, mouse_pos); // Tagged as new ref because constructor sets Window to NULL. | ||||
|     if (g.OpenPopupStack.Size < current_stack_size + 1) | ||||
|         g.OpenPopupStack.push_back(popup_ref); | ||||
|     else if (reopen_existing || g.OpenPopupStack[current_stack_size].PopupId != id) | ||||
| @@ -4479,7 +4481,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) | ||||
|             // Popup first latch mouse position, will position itself when it appears next frame | ||||
|             window->AutoPosLastDirection = ImGuiDir_None; | ||||
|             if ((flags & ImGuiWindowFlags_Popup) != 0 && !window_pos_set_by_api) | ||||
|                 window->PosFloat = g.IO.MousePos; | ||||
|                 window->PosFloat = g.CurrentPopupStack.back().PopupPosOnOpen; | ||||
|         } | ||||
|  | ||||
|         // Collapse window by double-clicking on title bar | ||||
|   | ||||
| @@ -401,9 +401,10 @@ struct ImGuiPopupRef | ||||
|     ImGuiWindow*        Window;         // Resolved on BeginPopup() - may stay unresolved if user never calls OpenPopup() | ||||
|     ImGuiWindow*        ParentWindow;   // Set on OpenPopup() | ||||
|     ImGuiID             ParentMenuSet;  // Set on OpenPopup() | ||||
|     ImVec2              PopupPosOnOpen; // Preferred popup position (typically == MousePosOnOpen when using mouse) | ||||
|     ImVec2              MousePosOnOpen; // Copy of mouse position at the time of opening popup | ||||
|  | ||||
|     ImGuiPopupRef(ImGuiID id, ImGuiWindow* parent_window, ImGuiID parent_menu_set, const ImVec2& mouse_pos) { PopupId = id; Window = NULL; ParentWindow = parent_window; ParentMenuSet = parent_menu_set; MousePosOnOpen = mouse_pos; } | ||||
|     ImGuiPopupRef(ImGuiID id, ImGuiWindow* parent_window, ImGuiID parent_menu_set, const ImVec2& popup_pos, const ImVec2& mouse_pos) { PopupId = id; Window = NULL; ParentWindow = parent_window; ParentMenuSet = parent_menu_set; PopupPosOnOpen = popup_pos; MousePosOnOpen = mouse_pos; } | ||||
| }; | ||||
|  | ||||
| struct ImGuiColumnData | ||||
|   | ||||
		Reference in New Issue
	
	Block a user