mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Merge branch 'viewport' into docking
# Conflicts: # imgui.cpp # imgui_internal.h
This commit is contained in:
		@@ -312,7 +312,7 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i
 | 
			
		||||
 - viewport: with platform decoration enabled, platform may force constraint (e.g. minimum size)
 | 
			
		||||
 - viewport: use getfocus/setfocus api to synchronize imgui<>platform focus better (e.g imgui-side ctrl-tab can focus os window, OS initial setup and alt-tab can focus imgui window etc.)
 | 
			
		||||
 - viewport: store per-viewport/monitor DPI in .ini file so an application reload or main window changing DPI on reload can be properly patched for.
 | 
			
		||||
 - viewport: implicit Debug window can hog a zombie viewport (harmless, noisy?)
 | 
			
		||||
 - viewport: implicit Debug window can hog a zombie viewport (harmless, noisy?) > could at least clear out the reference on a per session basis?
 | 
			
		||||
 - viewport: need to clarify how to use GetMousePos() from a user point of view.
 | 
			
		||||
 - platform: glfw: no support for ImGuiBackendFlags_HasMouseHoveredViewport. 
 | 
			
		||||
 - platform: sdl: no support for ImGuiBackendFlags_HasMouseHoveredViewport. maybe we could use SDL_GetMouseFocus() / SDL_WINDOW_MOUSE_FOCUS if imgui could fallback on its heuristic when NoInputs is set
 | 
			
		||||
 
 | 
			
		||||
@@ -7198,7 +7198,7 @@ bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags fla
 | 
			
		||||
    if (g.NextWindowData.PosCond == 0)
 | 
			
		||||
        SetNextWindowPos(window->Viewport->GetCenter(), ImGuiCond_Appearing, ImVec2(0.5f, 0.5f));
 | 
			
		||||
 | 
			
		||||
    flags |= flags | ImGuiWindowFlags_Popup | ImGuiWindowFlags_Modal | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoDocking;
 | 
			
		||||
    flags |= ImGuiWindowFlags_Popup | ImGuiWindowFlags_Modal | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoDocking;
 | 
			
		||||
    const bool is_open = Begin(name, p_open, flags);
 | 
			
		||||
    if (!is_open || (p_open && !*p_open)) // NB: is_open can be 'false' when the popup is completely clipped (e.g. zero size display)
 | 
			
		||||
    {
 | 
			
		||||
@@ -7981,9 +7981,13 @@ static int ImGui::FindPlatformMonitorForPos(const ImVec2& pos)
 | 
			
		||||
static int ImGui::FindPlatformMonitorForRect(const ImRect& rect)
 | 
			
		||||
{
 | 
			
		||||
    ImGuiContext& g = *GImGui;
 | 
			
		||||
    float surface_threshold = rect.GetWidth() * rect.GetHeight() * 0.5f;
 | 
			
		||||
 | 
			
		||||
    // Use a minimum threshold of 1.0f so a zero-sized rect will still find its monitor given its position. 
 | 
			
		||||
    // This is necessary for tooltips which always resize down to zero at first.
 | 
			
		||||
    const float surface_threshold = ImMax(rect.GetWidth() * rect.GetHeight() * 0.5f, 1.0f);
 | 
			
		||||
    int best_monitor_n = -1;
 | 
			
		||||
    float best_monitor_surface = 0.001f;
 | 
			
		||||
 | 
			
		||||
    for (int monitor_n = 0; monitor_n < g.PlatformIO.Monitors.Size && best_monitor_surface < surface_threshold; monitor_n++)
 | 
			
		||||
    {
 | 
			
		||||
        const ImGuiPlatformMonitor& monitor = g.PlatformIO.Monitors[monitor_n];
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user