mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	Viewports: used main viewport for centering (wip), clarified the meaning of how ImGuiPlatformMonitor WorkPos/WorkSize should be set if unknown, added asserts.
This commit is contained in:
		| @@ -7590,9 +7590,8 @@ static void ImGui::ErrorCheckNewFrameSanityChecks() | ||||
|         for (int monitor_n = 0; monitor_n < g.PlatformIO.Monitors.Size; monitor_n++) | ||||
|         { | ||||
|             ImGuiPlatformMonitor& mon = g.PlatformIO.Monitors[monitor_n]; | ||||
|             IM_UNUSED(mon); | ||||
|             IM_ASSERT(mon.MainSize.x > 0.0f && mon.MainSize.y > 0.0f && "Monitor bounds not setup properly."); | ||||
|             IM_ASSERT(mon.WorkSize.x > 0.0f && mon.WorkSize.y > 0.0f && "Monitor bounds not setup properly. If you don't have work area information, just copy Min/Max into them."); | ||||
|             IM_ASSERT(mon.MainSize.x > 0.0f && mon.MainSize.y > 0.0f && "Monitor main bounds not setup properly."); | ||||
|             IM_ASSERT(ImRect(mon.MainPos, mon.MainPos + mon.MainSize).Contains(ImRect(mon.WorkPos, mon.WorkPos + mon.WorkSize)) && "Monitor work bounds not setup properly. If you don't have work area information, just copy MainPos/MainSize into them."); | ||||
|             IM_ASSERT(mon.DpiScale != 0.0f); | ||||
|         } | ||||
|     } | ||||
|   | ||||
							
								
								
									
										5
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -2570,7 +2570,7 @@ struct ImGuiPlatformIO | ||||
| struct ImGuiPlatformMonitor | ||||
| { | ||||
|     ImVec2  MainPos, MainSize;      // Coordinates of the area displayed on this monitor (Min = upper left, Max = bottom right) | ||||
|     ImVec2  WorkPos, WorkSize;      // (Optional) Coordinates without task bars / side bars / menu bars. imgui uses this to avoid positioning popups/tooltips inside this region. | ||||
|     ImVec2  WorkPos, WorkSize;      // Coordinates without task bars / side bars / menu bars. Used to avoid positioning popups/tooltips inside this region. If you don't have this info, please copy the value for MainPos/MainSize.  | ||||
|     float   DpiScale;               // 1.0f = 96 DPI | ||||
|     ImGuiPlatformMonitor()          { MainPos = MainSize = WorkPos = WorkSize = ImVec2(0, 0); DpiScale = 1.0f; } | ||||
| }; | ||||
| @@ -2621,7 +2621,8 @@ struct ImGuiViewport | ||||
|     ImGuiViewport()     { ID = 0; Flags = 0; DpiScale = 0.0f; DrawData = NULL; ParentViewportId = 0; RendererUserData = PlatformUserData = PlatformHandle = PlatformHandleRaw = NULL; PlatformRequestMove = PlatformRequestResize = PlatformRequestClose = false; } | ||||
|     ~ImGuiViewport()    { IM_ASSERT(PlatformUserData == NULL && RendererUserData == NULL); } | ||||
|  | ||||
|     // Access work-area rectangle | ||||
|     // Access work-area rectangle with GetWorkXXX functions (see comments above) | ||||
|     ImVec2              GetCenter()             { return ImVec2(Pos.x + Size.x * 0.5f, Pos.y + Size.y * 0.5f); } | ||||
|     ImVec2              GetWorkPos()            { return ImVec2(Pos.x + WorkOffsetMin.x, Pos.y + WorkOffsetMin.y); } | ||||
|     ImVec2              GetWorkSize()           { return ImVec2(Size.x - WorkOffsetMin.x + WorkOffsetMax.x, Size.y - WorkOffsetMin.y + WorkOffsetMax.y); } // This not clamped | ||||
| }; | ||||
|   | ||||
| @@ -2923,8 +2923,8 @@ static void ShowDemoWindowPopups() | ||||
|             ImGui::OpenPopup("Delete?"); | ||||
|  | ||||
|         // Always center this window when appearing | ||||
|         ImVec2 center(ImGui::GetIO().DisplaySize.x * 0.5f, ImGui::GetIO().DisplaySize.y * 0.5f); | ||||
|         ImGui::SetNextWindowPos(center, ImGuiCond_Appearing, ImVec2(0.5f, 0.5f)); | ||||
|         ImGuiViewport* viewport = ImGui::GetMainViewport(); | ||||
|         ImGui::SetNextWindowPos(viewport->GetCenter(), ImGuiCond_Appearing, ImVec2(0.5f, 0.5f)); | ||||
|  | ||||
|         if (ImGui::BeginPopupModal("Delete?", NULL, ImGuiWindowFlags_AlwaysAutoResize)) | ||||
|         { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user