From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/init.c | 1 + dlls/winex11.drv/window.c | 20 +++++++++++++++++--- dlls/winex11.drv/x11drv.h | 2 ++ 3 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c index ec77a232e8e..28729d1c14b 100644 --- a/dlls/winex11.drv/init.c +++ b/dlls/winex11.drv/init.c @@ -421,6 +421,7 @@ static const struct user_driver_funcs x11drv_funcs = .pClipboardWindowProc = X11DRV_ClipboardWindowProc, .pUpdateClipboard = X11DRV_UpdateClipboard, .pCreateLayeredWindow = X11DRV_CreateLayeredWindow, + .pUpdateLayeredWindow = X11DRV_UpdateLayeredWindow, .pWindowMessage = X11DRV_WindowMessage, .pWindowPosChanging = X11DRV_WindowPosChanging, .pCreateWindowSurface = X11DRV_CreateWindowSurface, diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 1d6bf30206d..74a9a4f6d68 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -2991,7 +2991,6 @@ BOOL X11DRV_CreateLayeredWindow( HWND hwnd, const RECT *window_rect, COLORREF co { struct window_surface *surface; struct x11drv_win_data *data; - BOOL mapped; RECT rect;
if (!(data = get_win_data( hwnd ))) return FALSE; @@ -3013,6 +3012,22 @@ BOOL X11DRV_CreateLayeredWindow( HWND hwnd, const RECT *window_rect, COLORREF co else set_surface_color_key( surface, color_key );
if ((*window_surface = surface)) window_surface_add_ref( surface ); + release_win_data( data ); + + return TRUE; +} + + +/*********************************************************************** + * UpdateLayeredWindow (X11DRV.@) + */ +void X11DRV_UpdateLayeredWindow( HWND hwnd, const RECT *window_rect, COLORREF color_key, + BYTE alpha, UINT flags ) +{ + struct x11drv_win_data *data; + BOOL mapped; + + if (!(data = get_win_data( hwnd ))) return; mapped = data->mapped; release_win_data( data );
@@ -3024,10 +3039,9 @@ BOOL X11DRV_CreateLayeredWindow( HWND hwnd, const RECT *window_rect, COLORREF co if ((style & WS_VISIBLE) && ((style & WS_MINIMIZE) || is_window_rect_mapped( window_rect ))) map_window( hwnd, style ); } - - return TRUE; }
+ /* Add a window to taskbar */ static void taskbar_add_tab( HWND hwnd ) { diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index c16423b3cf0..49fb17fc7cd 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -242,6 +242,8 @@ extern LRESULT X11DRV_ClipboardWindowProc( HWND hwnd, UINT msg, WPARAM wp, LPARA extern void X11DRV_UpdateClipboard(void); extern BOOL X11DRV_CreateLayeredWindow( HWND hwnd, const RECT *window_rect, COLORREF color_key, struct window_surface **surface ); +extern void X11DRV_UpdateLayeredWindow( HWND hwnd, const RECT *window_rect, COLORREF color_key, + BYTE alpha, UINT flags ); extern LRESULT X11DRV_WindowMessage( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ); extern BOOL X11DRV_WindowPosChanging( HWND hwnd, UINT swp_flags, const RECT *window_rect, const RECT *client_rect, RECT *visible_rect ); extern BOOL X11DRV_CreateWindowSurface( HWND hwnd, UINT swp_flags, const RECT *visible_rect, struct window_surface **surface );