Browse Source

Backends: DX10, DX11, DX12: Disabled DXGI's Alt+Enter default behavior on secondary viewports. (#4350)

Removed use of DXGI_MWA_NO_PRINT_SCREEN from original PR.
David Maas 4 years ago
parent
commit
15c88c4941

+ 1 - 0
backends/imgui_impl_dx10.cpp

@@ -708,6 +708,7 @@ static void ImGui_ImplDX10_CreateWindow(ImGuiViewport* viewport)
 
 
     IM_ASSERT(vd->SwapChain == nullptr && vd->RTView == nullptr);
     IM_ASSERT(vd->SwapChain == nullptr && vd->RTView == nullptr);
     bd->pFactory->CreateSwapChain(bd->pd3dDevice, &sd, &vd->SwapChain);
     bd->pFactory->CreateSwapChain(bd->pd3dDevice, &sd, &vd->SwapChain);
+    bd->pFactory->MakeWindowAssociation(hwnd, DXGI_MWA_NO_ALT_ENTER | DXGI_MWA_NO_WINDOW_CHANGES); // Disable e.g. Alt+Enter
 
 
     // Create the render target
     // Create the render target
     if (vd->SwapChain)
     if (vd->SwapChain)

+ 1 - 0
backends/imgui_impl_dx11.cpp

@@ -738,6 +738,7 @@ static void ImGui_ImplDX11_CreateWindow(ImGuiViewport* viewport)
             break;
             break;
     }
     }
     IM_ASSERT(SUCCEEDED(hr));
     IM_ASSERT(SUCCEEDED(hr));
+    bd->pFactory->MakeWindowAssociation(hwnd, DXGI_MWA_NO_ALT_ENTER | DXGI_MWA_NO_WINDOW_CHANGES); // Disable e.g. Alt+Enter
 
 
     // Create the render target
     // Create the render target
     if (vd->SwapChain != nullptr)
     if (vd->SwapChain != nullptr)

+ 2 - 0
backends/imgui_impl_dx12.cpp

@@ -1087,6 +1087,8 @@ static void ImGui_ImplDX12_CreateWindow(ImGuiViewport* viewport)
     IDXGISwapChain1* swap_chain = nullptr;
     IDXGISwapChain1* swap_chain = nullptr;
     res = dxgi_factory->CreateSwapChainForHwnd(vd->CommandQueue, hwnd, &sd1, nullptr, nullptr, &swap_chain);
     res = dxgi_factory->CreateSwapChainForHwnd(vd->CommandQueue, hwnd, &sd1, nullptr, nullptr, &swap_chain);
     IM_ASSERT(res == S_OK);
     IM_ASSERT(res == S_OK);
+    res = dxgi_factory->MakeWindowAssociation(hwnd, DXGI_MWA_NO_ALT_ENTER | DXGI_MWA_NO_WINDOW_CHANGES); // Disable e.g. Alt+Enter
+    IM_ASSERT(res == S_OK);
 
 
     dxgi_factory->Release();
     dxgi_factory->Release();
 
 

+ 2 - 0
docs/CHANGELOG.txt

@@ -88,6 +88,8 @@ Docking+Viewports Branch:
 - Viewports: DestroyContext() does not call DestroyPlatformWindows() anymore at
 - Viewports: DestroyContext() does not call DestroyPlatformWindows() anymore at
   it assumed to be unnecessary as backensd should have done it and we check that
   it assumed to be unnecessary as backensd should have done it and we check that
   backends have been shutdown since 1.90.4. Changed into asserts. (#7175, #8945)
   backends have been shutdown since 1.90.4. Changed into asserts. (#7175, #8945)
+- Backends: DX10, DX11, DX12: Disabled DXGI's Alt+Enter default behavior on secondary
+  viewports managed by the backend. (#4350) [@PathogenDavid]
 - Backends: Vulkan: Added ImGui_ImplVulkanH_GetWindowDataFromViewport() accessor/helper.
 - Backends: Vulkan: Added ImGui_ImplVulkanH_GetWindowDataFromViewport() accessor/helper.
   (#8946, #8940) [@olivier-gerard]
   (#8946, #8940) [@olivier-gerard]