Compare commits

...

4 Commits

Author SHA1 Message Date
MicroBlock
ba0b3159cb
Merge 9541979be2 into 768e81a0eb 2025-08-15 01:36:20 +12:00
Jan Hendrik Farr
768e81a0eb Wayland: Fix key repeat halting
Key repeat shoud only be halted when the repeating key
is released, not when another key is released.
2025-08-14 15:35:04 +02:00
MicroBlock
9541979be2
fix: add DWM_BB_ENABLE | DWM_BB_BLURREGION; 2025-02-03 15:35:46 +08:00
MicroBlock
1952a1b363
fix: unable to make window transparent in later win10 versions 2025-02-03 14:59:37 +08:00
4 changed files with 12 additions and 3 deletions

View File

@ -68,6 +68,7 @@ video tutorials.
- Jan Ekström
- Siavash Eliasi
- er-azh
- Jan Hendrik Farr
- Ahmad Fatoum
- Nikita Fediuchin
- Felipe Ferreira

View File

@ -138,6 +138,7 @@ information on what to include when reporting a bug.
- [Wayland] Bugfix: Retrieved cursor position would be incorrect when hovering over
fallback decorations
- [Wayland] Bugfix: Fallback decorations would report scroll events
- [Wayland] Bugfix: Keyboard repeat events halted when any key is released (#2568)
- [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631)
- [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface`
- [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless`

View File

@ -68,6 +68,9 @@ static DWORD getWindowExStyle(const _GLFWwindow* window)
{
DWORD style = WS_EX_APPWINDOW;
if (_glfw.hints.framebuffer.transparent)
style |= WS_EX_LAYERED;
if (window->monitor || window->floating)
style |= WS_EX_TOPMOST;
@ -377,15 +380,17 @@ static void updateFramebufferTransparency(const _GLFWwindow* window)
if (FAILED(DwmIsCompositionEnabled(&composition)) || !composition)
return;
if (IsWindows8OrGreater() ||
(SUCCEEDED(DwmGetColorizationColor(&color, &opaque)) && !opaque))
{
HRGN region = CreateRectRgn(0, 0, -1, -1);
DWM_BLURBEHIND bb = {0};
bb.dwFlags = DWM_BB_ENABLE | DWM_BB_BLURREGION;
bb.dwFlags = DWM_BB_ENABLE | DWM_BB_BLURREGION;;
bb.hRgnBlur = region;
bb.fEnable = TRUE;
SetLayeredWindowAttributes(window->win32.handle, 0x0030c100, 254, LWA_ALPHA);
DwmEnableBlurBehindWindow(window->win32.handle, &bb);
DeleteObject(region);
}
@ -1290,6 +1295,7 @@ static int createNativeWindow(_GLFWwindow* window,
#else
wc.lpszClassName = L"GLFW30";
#endif
wc.hbrBackground = (HBRUSH)CreateSolidBrush(0x00000000);
// Load user-provided icon if available
wc.hIcon = LoadImageW(GetModuleHandleW(NULL),
L"GLFW_ICON", IMAGE_ICON,

View File

@ -1838,11 +1838,12 @@ static void keyboardHandleKey(void* userData,
timer.it_value.tv_sec = _glfw.wl.keyRepeatDelay / 1000;
timer.it_value.tv_nsec = (_glfw.wl.keyRepeatDelay % 1000) * 1000000;
timerfd_settime(_glfw.wl.keyRepeatTimerfd, 0, &timer, NULL);
}
} else if (scancode == _glfw.wl.keyRepeatScancode) {
timerfd_settime(_glfw.wl.keyRepeatTimerfd, 0, &timer, NULL);
}
timerfd_settime(_glfw.wl.keyRepeatTimerfd, 0, &timer, NULL);
_glfwInputKey(window, key, scancode, action, _glfw.wl.xkb.modifiers);
if (action == GLFW_PRESS)