mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Viewport, Platform: Added ImGuiViewportFlags_TopMost that will be used by tooltip window (without it, clicking and holding the window emitting the tooltip would move the tooltip to the back) + GLFW backend fixes for non-win32 platforms. (#1542)
This commit is contained in:
		@@ -41,8 +41,10 @@
 | 
			
		||||
#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_WINDOW_TOPMOST (GLFW_VERSION_MAJOR * 1000 + GLFW_VERSION_MINOR * 100 >= 3200) // 3.2+
 | 
			
		||||
#define GLFW_HAS_VULKAN         (GLFW_VERSION_MAJOR * 1000 + GLFW_VERSION_MINOR * 100 >= 3200) // 3.2+
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Data
 | 
			
		||||
enum GlfwClientApi
 | 
			
		||||
{
 | 
			
		||||
@@ -357,6 +359,9 @@ static void ImGui_ImplGlfw_CreateWindow(ImGuiViewport* viewport)
 | 
			
		||||
    glfwWindowHint(GLFW_VISIBLE, false);
 | 
			
		||||
    glfwWindowHint(GLFW_FOCUSED, false);
 | 
			
		||||
    glfwWindowHint(GLFW_DECORATED, (viewport->Flags & ImGuiViewportFlags_NoDecoration) ? false : true);
 | 
			
		||||
#if GLFW_HAS_WINDOW_TOPMOST
 | 
			
		||||
    glfwWindowHint(GLFW_FLOATING, (viewport->Flags & imGuiViewportFlags_TopMost) ? true : false);
 | 
			
		||||
#endif
 | 
			
		||||
    GLFWwindow* share_window = (g_ClientApi == GlfwClientApi_OpenGL) ? g_Window : NULL;
 | 
			
		||||
    data->Window = glfwCreateWindow((int)viewport->Size.x, (int)viewport->Size.y, "No Title Yet", NULL, share_window);
 | 
			
		||||
    data->WindowOwned = true;
 | 
			
		||||
@@ -373,7 +378,7 @@ static void ImGui_ImplGlfw_DestroyWindow(ImGuiViewport* viewport)
 | 
			
		||||
    {
 | 
			
		||||
        if (data->WindowOwned)
 | 
			
		||||
        {
 | 
			
		||||
#if GLFW_HAS_GLFW_HOVERED
 | 
			
		||||
#if GLFW_HAS_GLFW_HOVERED && defined(_WIN32)
 | 
			
		||||
            HWND hwnd = glfwGetWin32Window(data->Window);
 | 
			
		||||
            ::RemovePropA(hwnd, "IMGUI_VIEWPORT");
 | 
			
		||||
#endif
 | 
			
		||||
@@ -419,7 +424,7 @@ static void ImGui_ImplGlfw_ShowWindow(ImGuiViewport* viewport)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // GLFW hack: install hook for WM_NCHITTEST message handler
 | 
			
		||||
#if GLFW_HAS_GLFW_HOVERED
 | 
			
		||||
#if GLFW_HAS_GLFW_HOVERED && defined(_WIN32)
 | 
			
		||||
    ::SetPropA(hwnd, "IMGUI_VIEWPORT", viewport);
 | 
			
		||||
    if (g_GlfwWndProc == NULL)
 | 
			
		||||
        g_GlfwWndProc = (WNDPROC)::GetWindowLongPtr(hwnd, GWLP_WNDPROC);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user