Win32: Change transparent framebuffer key color

This is a temporary fix while we determine if the color key workaround
should be removed completely.  See issue thread for discussion.

Related to #1512.

(cherry picked from commit c88ee1c9d3)
This commit is contained in:
Camilla Löwy 2019-11-05 18:55:42 +01:00
parent 3484aa8187
commit c5a870ebd9
2 changed files with 8 additions and 1 deletions

View File

@ -234,6 +234,13 @@ alpha channel will be used to combine the framebuffer with the background. This
does not affect window decorations. Possible values are `GLFW_TRUE` and does not affect window decorations. Possible values are `GLFW_TRUE` and
`GLFW_FALSE`. `GLFW_FALSE`.
@par
@win32 GLFW sets a color key for the window to work around repainting issues
with a transparent framebuffer. The chosen color value is RGB 255,0,255
(magenta). This will make pixels with that exact color fully transparent
regardless of their alpha values. If this is a problem, make these pixels any
other color before buffer swap.
@anchor GLFW_FOCUS_ON_SHOW_hint @anchor GLFW_FOCUS_ON_SHOW_hint
__GLFW_FOCUS_ON_SHOW__ specifies whether the window will be given input __GLFW_FOCUS_ON_SHOW__ specifies whether the window will be given input
focus when @ref glfwShowWindow is called. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. focus when @ref glfwShowWindow is called. Possible values are `GLFW_TRUE` and `GLFW_FALSE`.

View File

@ -411,7 +411,7 @@ static void updateFramebufferTransparency(const _GLFWwindow* window)
// issue. When set to black, something is making the hit test // issue. When set to black, something is making the hit test
// not resize with the window frame. // not resize with the window frame.
SetLayeredWindowAttributes(window->win32.handle, SetLayeredWindowAttributes(window->win32.handle,
RGB(0, 193, 48), 255, LWA_COLORKEY); RGB(255, 0, 255), 255, LWA_COLORKEY);
} }
DeleteObject(region); DeleteObject(region);