mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Viewport, Platform, Examples: Added support for transparent window via PlatformIO Platform_SetWindowAlpha (#1542) + fixes for GLFW 3.3
This commit is contained in:
		@@ -39,6 +39,7 @@
 | 
			
		||||
#else
 | 
			
		||||
#define GLFW_HAS_GLFW_HOVERED   0
 | 
			
		||||
#endif
 | 
			
		||||
#define GLFW_HAS_WINDOW_ALPHA   (GLFW_VERSION_MAJOR * 1000 + GLFW_VERSION_MINOR * 100 >= 3300) // 3.3+
 | 
			
		||||
#define GLFW_HAS_VULKAN         (GLFW_VERSION_MAJOR * 1000 + GLFW_VERSION_MINOR * 100 >= 3200) // 3.2+
 | 
			
		||||
 | 
			
		||||
// Data
 | 
			
		||||
@@ -235,8 +236,8 @@ static void ImGui_ImplGlfw_UpdateMouse()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
#if GLFW_HAS_GLFW_HOVERED
 | 
			
		||||
        io.ConfigFlags |= ImGuiConfigFlags_PlatformHasMouseHoveredViewport;
 | 
			
		||||
        if (glfwGetWindowAttrib(data->Window, GLFW_HOVERED) && !(viewport->Flags & ImGuiViewportFlags_NoInputs))
 | 
			
		||||
        io.BackendFlags |= ImGuiBackendFlags_HasMouseHoveredViewport;
 | 
			
		||||
        if (glfwGetWindowAttrib(window, GLFW_HOVERED) && !(viewport->Flags & ImGuiViewportFlags_NoInputs))
 | 
			
		||||
            io.MouseHoveredViewport = viewport->ID;
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
@@ -469,6 +470,14 @@ static void ImGui_ImplGlfw_SetWindowTitle(ImGuiViewport* viewport, const char* t
 | 
			
		||||
    glfwSetWindowTitle(data->Window, title);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if GLFW_HAS_WINDOW_ALPHA
 | 
			
		||||
static void ImGui_ImplGlfw_SetWindowAlpha(ImGuiViewport* viewport, float alpha)
 | 
			
		||||
{
 | 
			
		||||
    ImGuiViewportDataGlfw* data = (ImGuiViewportDataGlfw*)viewport->PlatformUserData;
 | 
			
		||||
    glfwSetWindowOpacity(data->Window, alpha);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void ImGui_ImplGlfw_RenderWindow(ImGuiViewport* viewport, void*)
 | 
			
		||||
{
 | 
			
		||||
    ImGuiViewportDataGlfw* data = (ImGuiViewportDataGlfw*)viewport->PlatformUserData;
 | 
			
		||||
@@ -522,6 +531,9 @@ static void ImGui_ImplGlfw_InitPlatformInterface()
 | 
			
		||||
    platform_io.Platform_SetWindowTitle = ImGui_ImplGlfw_SetWindowTitle;
 | 
			
		||||
    platform_io.Platform_RenderWindow = ImGui_ImplGlfw_RenderWindow;
 | 
			
		||||
    platform_io.Platform_SwapBuffers = ImGui_ImplGlfw_SwapBuffers;
 | 
			
		||||
#if GLFW_HAS_WINDOW_ALPHA
 | 
			
		||||
    platform_io.Platform_SetWindowAlpha = ImGui_ImplGlfw_SetWindowAlpha;
 | 
			
		||||
#endif
 | 
			
		||||
#if GLFW_HAS_VULKAN
 | 
			
		||||
    platform_io.Platform_CreateVkSurface = ImGui_ImplGlfw_CreateVkSurface;
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user