mirror of
https://github.com/ocornut/imgui.git
synced 2024-12-12 12:09:02 +08:00
Backends: Win32: revert accidental deletion of ImGui_ImplWin32_EnableAlphaCompositing() in a566ecc
(#3218)
This was still in docking, but moved back in upper locaton. # Conflicts: # backends/imgui_impl_win32.cpp
This commit is contained in:
parent
88ac2ced7c
commit
07e07030a6
@ -899,7 +899,47 @@ float ImGui_ImplWin32_GetDpiScaleForHwnd(void* hwnd)
|
|||||||
return ImGui_ImplWin32_GetDpiScaleForMonitor(monitor);
|
return ImGui_ImplWin32_GetDpiScaleForMonitor(monitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------
|
||||||
|
// Transparency related helpers (optional)
|
||||||
//--------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#pragma comment(lib, "dwmapi") // Link with dwmapi.lib. MinGW will require linking with '-ldwmapi'
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// [experimental]
|
||||||
|
// Borrowed from GLFW's function updateFramebufferTransparency() in src/win32_window.c
|
||||||
|
// (the Dwm* functions are Vista era functions but we are borrowing logic from GLFW)
|
||||||
|
void ImGui_ImplWin32_EnableAlphaCompositing(void* hwnd)
|
||||||
|
{
|
||||||
|
if (!_IsWindowsVistaOrGreater())
|
||||||
|
return;
|
||||||
|
|
||||||
|
BOOL composition;
|
||||||
|
if (FAILED(::DwmIsCompositionEnabled(&composition)) || !composition)
|
||||||
|
return;
|
||||||
|
|
||||||
|
BOOL opaque;
|
||||||
|
DWORD color;
|
||||||
|
if (_IsWindows8OrGreater() || (SUCCEEDED(::DwmGetColorizationColor(&color, &opaque)) && !opaque))
|
||||||
|
{
|
||||||
|
HRGN region = ::CreateRectRgn(0, 0, -1, -1);
|
||||||
|
DWM_BLURBEHIND bb = {};
|
||||||
|
bb.dwFlags = DWM_BB_ENABLE | DWM_BB_BLURREGION;
|
||||||
|
bb.hRgnBlur = region;
|
||||||
|
bb.fEnable = TRUE;
|
||||||
|
::DwmEnableBlurBehindWindow((HWND)hwnd, &bb);
|
||||||
|
::DeleteObject(region);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DWM_BLURBEHIND bb = {};
|
||||||
|
bb.dwFlags = DWM_BB_ENABLE;
|
||||||
|
::DwmEnableBlurBehindWindow((HWND)hwnd, &bb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------
|
||||||
// MULTI-VIEWPORT / PLATFORM INTERFACE SUPPORT
|
// MULTI-VIEWPORT / PLATFORM INTERFACE SUPPORT
|
||||||
// This is an _advanced_ and _optional_ feature, allowing the backend to create and handle multiple viewports simultaneously.
|
// This is an _advanced_ and _optional_ feature, allowing the backend to create and handle multiple viewports simultaneously.
|
||||||
// If you are new to dear imgui or creating a new binding for dear imgui, it is recommended that you completely ignore this section first..
|
// If you are new to dear imgui or creating a new binding for dear imgui, it is recommended that you completely ignore this section first..
|
||||||
@ -1220,43 +1260,3 @@ static void ImGui_ImplWin32_ShutdownPlatformInterface()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------
|
||||||
// Transparency related helpers (optional)
|
|
||||||
//--------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
#pragma comment(lib, "dwmapi") // Link with dwmapi.lib. MinGW will require linking with '-ldwmapi'
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// [experimental]
|
|
||||||
// Borrowed from GLFW's function updateFramebufferTransparency() in src/win32_window.c
|
|
||||||
// (the Dwm* functions are Vista era functions but we are borrowing logic from GLFW)
|
|
||||||
void ImGui_ImplWin32_EnableAlphaCompositing(void* hwnd)
|
|
||||||
{
|
|
||||||
if (!_IsWindowsVistaOrGreater())
|
|
||||||
return;
|
|
||||||
|
|
||||||
BOOL composition;
|
|
||||||
if (FAILED(::DwmIsCompositionEnabled(&composition)) || !composition)
|
|
||||||
return;
|
|
||||||
|
|
||||||
BOOL opaque;
|
|
||||||
DWORD color;
|
|
||||||
if (_IsWindows8OrGreater() || (SUCCEEDED(::DwmGetColorizationColor(&color, &opaque)) && !opaque))
|
|
||||||
{
|
|
||||||
HRGN region = ::CreateRectRgn(0, 0, -1, -1);
|
|
||||||
DWM_BLURBEHIND bb = {};
|
|
||||||
bb.dwFlags = DWM_BB_ENABLE | DWM_BB_BLURREGION;
|
|
||||||
bb.hRgnBlur = region;
|
|
||||||
bb.fEnable = TRUE;
|
|
||||||
::DwmEnableBlurBehindWindow((HWND)hwnd, &bb);
|
|
||||||
::DeleteObject(region);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DWM_BLURBEHIND bb = {};
|
|
||||||
bb.dwFlags = DWM_BB_ENABLE;
|
|
||||||
::DwmEnableBlurBehindWindow((HWND)hwnd, &bb);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------
|
|
||||||
|
Loading…
Reference in New Issue
Block a user