mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 15:11:05 +01:00 
			
		
		
		
	Viewport: Switched to using unified platform-absolute mouse coordinates, which simplify lots of problems and simplify/reduce tricky conversions, makes ImVec2 less ambiguous. Fixed various viewport/windowing/popups/synchronization bugs. Settings on host-viewport are stored as relative (made settings decently compatible between viewport enable/disabled settings). Merged ImGuiViewport::Pos and ::PlatformPos. Tweaked thumbnails. Better, smaller code. (#1542)
This commit is contained in:
		
							
								
								
									
										9
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								imgui.h
									
									
									
									
									
								
							@@ -1152,7 +1152,7 @@ namespace ImGui
 | 
			
		||||
    bool                Begin(const char* name, bool* p_open, const ImVec2& size_on_first_use, float bg_alpha_override = -1.0f, ImGuiWindowFlags flags = 0); // Use SetNextWindowSize(size, ImGuiCond_FirstUseEver) + SetNextWindowBgAlpha() instead.
 | 
			
		||||
    static inline bool  IsRootWindowOrAnyChildHovered()       { return IsWindowHovered(ImGuiHoveredFlags_RootAndChildWindows); }
 | 
			
		||||
    static inline void  AlignFirstTextHeightToWidgets()       { AlignTextToFramePadding(); }
 | 
			
		||||
    static inline void  SetNextWindowPosCenter(ImGuiCond c=0) { ImGuiIO& io = GetIO(); SetNextWindowPos(ImVec2(io.DisplaySize.x * 0.5f, io.DisplaySize.y * 0.5f), c, ImVec2(0.5f, 0.5f)); } // FIXME-VIEWPORT: Select viewport based on mouse position
 | 
			
		||||
    static inline void  SetNextWindowPosCenter(ImGuiCond c=0) { ImGuiIO& io = GetIO(); SetNextWindowPos(ImVec2(io.DisplaySize.x * 0.5f, io.DisplaySize.y * 0.5f), c, ImVec2(0.5f, 0.5f)); } // FIXME-VIEWPORT-ABS: Select viewport based on mouse position
 | 
			
		||||
    // OBSOLETED in 1.51 (between Jun 2017 and Aug 2017)
 | 
			
		||||
    static inline bool  IsItemHoveredRect()                   { return IsItemHovered(ImGuiHoveredFlags_RectOnly); }
 | 
			
		||||
    static inline bool  IsPosHoveringAnyWindow(const ImVec2&) { IM_ASSERT(0); return false; } // This was misleading and partly broken. You probably want to use the ImGui::GetIO().WantCaptureMouse flag instead.
 | 
			
		||||
@@ -1947,12 +1947,11 @@ struct ImGuiViewport
 | 
			
		||||
{
 | 
			
		||||
    ImGuiID             ID;
 | 
			
		||||
    ImGuiViewportFlags  Flags;
 | 
			
		||||
    ImVec2              Pos;                    // Position of viewport in imgui virtual space (all viewports Pos.y == 0.0f, main viewport Pos.x == 0.0f)
 | 
			
		||||
    ImVec2              Pos;                    // Position of viewport both in imgui space and in OS desktop/native space
 | 
			
		||||
    ImVec2              Size;                   // Size of viewport in pixel
 | 
			
		||||
    float               DpiScale;               // 1.0f = 96 DPI = No extra scale
 | 
			
		||||
    ImDrawData*         DrawData;               // The ImDrawData corresponding to this viewport. Valid after Render() and until the next call to NewFrame().
 | 
			
		||||
 | 
			
		||||
    ImVec2              PlatformPos;            // Position in OS desktop/native space
 | 
			
		||||
    void*               PlatformUserData;       // void* to hold custom data structure for the platform (e.g. windowing info, render context)
 | 
			
		||||
    void*               PlatformHandle;         // void* for FindViewportByPlatformHandle(). (e.g. HWND, GlfwWindow*, SDL_Window*)
 | 
			
		||||
    bool                PlatformRequestClose;   // Platform window requested closure
 | 
			
		||||
@@ -1960,8 +1959,8 @@ struct ImGuiViewport
 | 
			
		||||
    bool                PlatformRequestResize;  // Platform window requested resize (e.g. window was resize using OS windowing facility)
 | 
			
		||||
    void*               RendererUserData;       // void* to hold custom data structure for the renderer (e.g. swap chain, frame-buffers etc.)
 | 
			
		||||
 | 
			
		||||
    ImGuiViewport() { ID = 0; Flags = 0; DpiScale = 0.0f; DrawData = NULL; PlatformUserData = PlatformHandle = NULL; PlatformRequestClose = PlatformRequestMove = PlatformRequestResize = false; RendererUserData = NULL; }
 | 
			
		||||
    ~ImGuiViewport() { IM_ASSERT(PlatformUserData == NULL && RendererUserData == NULL); }
 | 
			
		||||
    ImGuiViewport()     { ID = 0; Flags = 0; DpiScale = 0.0f; DrawData = NULL; PlatformUserData = PlatformHandle = NULL; PlatformRequestClose = PlatformRequestMove = PlatformRequestResize = false; RendererUserData = NULL; }
 | 
			
		||||
    ~ImGuiViewport()    { IM_ASSERT(PlatformUserData == NULL && RendererUserData == NULL); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if defined(__clang__)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user