mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Merge branch 'master' into viewport
# Conflicts: # examples/imgui_impl_dx10.cpp # examples/imgui_impl_dx11.cpp # examples/imgui_impl_dx12.cpp # examples/imgui_impl_dx9.cpp # examples/opengl2_example/imgui_impl_glfw_gl2.cpp # examples/opengl3_example/imgui_impl_glfw_gl3.cpp # examples/sdl_opengl2_example/imgui_impl_sdl_gl2.cpp # examples/sdl_opengl3_example/imgui_impl_sdl_gl3.cpp # examples/vulkan_example/imgui_impl_glfw_vulkan.cpp # imgui.h
This commit is contained in:
		@@ -18,7 +18,7 @@
 | 
			
		||||
//  2018-02-06: Misc: Removed call to ImGui::Shutdown() which is not available from 1.60 WIP, user needs to call CreateContext/DestroyContext themselves.
 | 
			
		||||
//  2018-02-06: Inputs: Added mapping for ImGuiKey_Space.
 | 
			
		||||
//  2018-01-25: Inputs: Added gamepad support if ImGuiConfigFlags_NavEnableGamepad is set.
 | 
			
		||||
//  2018-01-25: Inputs: Honoring the io.WantMoveMouse by repositioning the mouse (when using navigation and ImGuiConfigFlags_NavMoveMouse is set).
 | 
			
		||||
//  2018-01-25: Inputs: Honoring the io.WantSetMousePos by repositioning the mouse (when using navigation and ImGuiConfigFlags_NavMoveMouse is set).
 | 
			
		||||
//  2018-01-20: Inputs: Added Horizontal Mouse Wheel support.
 | 
			
		||||
//  2018-01-18: Inputs: Added mapping for ImGuiKey_Insert.
 | 
			
		||||
//  2017-08-25: Inputs: MousePos set to -FLT_MAX,-FLT_MAX when mouse is unavailable/missing (instead of -1,-1).
 | 
			
		||||
@@ -115,8 +115,17 @@ static bool ImGui_ImplGlfw_Init(GLFWwindow* window, bool install_callbacks, Glfw
 | 
			
		||||
{
 | 
			
		||||
    g_Window = window;
 | 
			
		||||
 | 
			
		||||
    // Setup back-end capabilities flags
 | 
			
		||||
    ImGuiIO& io = ImGui::GetIO();
 | 
			
		||||
    io.KeyMap[ImGuiKey_Tab] = GLFW_KEY_TAB;                         // Keyboard mapping. ImGui will use those indices to peek into the io.KeyDown[] array.
 | 
			
		||||
    io.BackendFlags |= ImGuiBackendFlags_HasMouseCursors;         // We can honor GetMouseCursor() values (optional)
 | 
			
		||||
    //io.BackendFlags |= ImGuiBackendFlags_HasSetMousePos;        // We can honor io.WantSetMousePos requests (optional, rarely used)
 | 
			
		||||
    io.BackendFlags |= ImGuiBackendFlags_PlatformHasViewports;    // We can create multi-viewports on the Platform side (optional)
 | 
			
		||||
#if GLFW_HAS_GLFW_HOVERED
 | 
			
		||||
    io.BackendFlags |= ImGuiBackendFlags_HasMouseHoveredViewport; // We can set io.MouseHoveredViewport correctly (optional, not easy)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // Keyboard mapping. ImGui will use those indices to peek into the io.KeyDown[] array.
 | 
			
		||||
    io.KeyMap[ImGuiKey_Tab] = GLFW_KEY_TAB;
 | 
			
		||||
    io.KeyMap[ImGuiKey_LeftArrow] = GLFW_KEY_LEFT;
 | 
			
		||||
    io.KeyMap[ImGuiKey_RightArrow] = GLFW_KEY_RIGHT;
 | 
			
		||||
    io.KeyMap[ImGuiKey_UpArrow] = GLFW_KEY_UP;
 | 
			
		||||
@@ -159,7 +168,6 @@ static bool ImGui_ImplGlfw_Init(GLFWwindow* window, bool install_callbacks, Glfw
 | 
			
		||||
    // Our mouse update function expect PlatformHandle to be filled for the main viewport
 | 
			
		||||
    ImGuiViewport* main_viewport = ImGui::GetMainViewport();
 | 
			
		||||
    main_viewport->PlatformHandle = (void*)g_Window;
 | 
			
		||||
    io.ConfigFlags |= ImGuiConfigFlags_PlatformHasViewports;
 | 
			
		||||
    if (io.ConfigFlags & ImGuiConfigFlags_EnableViewports)
 | 
			
		||||
        ImGui_ImplGlfw_InitPlatformInterface();
 | 
			
		||||
 | 
			
		||||
@@ -192,8 +200,9 @@ void ImGui_ImplGlfw_Shutdown()
 | 
			
		||||
static void ImGui_ImplGlfw_UpdateMouse()
 | 
			
		||||
{
 | 
			
		||||
#if 0
 | 
			
		||||
    if (io.WantMoveMouse)
 | 
			
		||||
        glfwSetCursorPos(g_Window, (double)io.MousePos.x, (double)io.MousePos.y);   // Set mouse position if requested by io.WantMoveMouse flag (used when io.NavMovesTrue is enabled by user and using directional navigation)
 | 
			
		||||
    // Set OS mouse position if requested (only used when ImGuiConfigFlags_NavEnableSetMousePos is enabled by user)
 | 
			
		||||
    if (io.WantSetMousePos)
 | 
			
		||||
        glfwSetCursorPos(g_Window, (double)io.MousePos.x, (double)io.MousePos.y);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    ImGuiIO& io = ImGui::GetIO();
 | 
			
		||||
@@ -233,15 +242,18 @@ static void ImGui_ImplGlfw_UpdateMouse()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Update OS/hardware mouse cursor if imgui isn't drawing a software cursor
 | 
			
		||||
    ImGuiMouseCursor cursor = ImGui::GetMouseCursor();
 | 
			
		||||
    if (io.MouseDrawCursor || cursor == ImGuiMouseCursor_None)
 | 
			
		||||
    if ((io.ConfigFlags & ImGuiConfigFlags_NoSetMouseCursor) == 0)
 | 
			
		||||
    {
 | 
			
		||||
        glfwSetInputMode(g_Window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        glfwSetCursor(g_Window, g_MouseCursors[cursor] ? g_MouseCursors[cursor] : g_MouseCursors[ImGuiMouseCursor_Arrow]);
 | 
			
		||||
        glfwSetInputMode(g_Window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
 | 
			
		||||
        ImGuiMouseCursor cursor = ImGui::GetMouseCursor();
 | 
			
		||||
        if (io.MouseDrawCursor || cursor == ImGuiMouseCursor_None)
 | 
			
		||||
        {
 | 
			
		||||
            glfwSetInputMode(g_Window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            glfwSetCursor(g_Window, g_MouseCursors[cursor] ? g_MouseCursors[cursor] : g_MouseCursors[ImGuiMouseCursor_Arrow]);
 | 
			
		||||
            glfwSetInputMode(g_Window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -293,6 +305,10 @@ void ImGui_ImplGlfw_NewFrame()
 | 
			
		||||
        MAP_ANALOG(ImGuiNavInput_LStickDown, 1,  -0.3f,  -0.9f);
 | 
			
		||||
        #undef MAP_BUTTON
 | 
			
		||||
        #undef MAP_ANALOG
 | 
			
		||||
        if (axes_count > 0 && buttons_count > 0)
 | 
			
		||||
            io.BackendFlags |= ImGuiBackendFlags_HasGamepad;
 | 
			
		||||
        else
 | 
			
		||||
            io.BackendFlags &= ~ImGuiBackendFlags_HasGamepad;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Start the frame. This call will update the io.WantCaptureMouse, io.WantCaptureKeyboard flag that you can use to dispatch inputs (or not) to your application.
 | 
			
		||||
@@ -387,7 +403,7 @@ static void ImGui_ImplGlfw_ShowWindow(ImGuiViewport* viewport)
 | 
			
		||||
    // GLFW hack: Hide icon from task bar
 | 
			
		||||
    HWND hwnd = glfwGetWin32Window(data->Window);
 | 
			
		||||
    ImGuiIO& io = ImGui::GetIO();
 | 
			
		||||
    if (io.ConfigFlags & ImGuiConfigFlags_PlatformNoTaskBar)
 | 
			
		||||
    if (io.ConfigFlags & ImGuiConfigFlags_NoTaskBarForViewports)
 | 
			
		||||
    {
 | 
			
		||||
        LONG ex_style = ::GetWindowLong(hwnd, GWL_EXSTYLE);
 | 
			
		||||
        ex_style &= ~WS_EX_APPWINDOW;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user