Wineで一部のトレイアイコンが空欄になる不具合のやっつけパッチ

以前、Wineで一部のプログラムのタスクトレイアイコンが空欄になる不具合が発生した際に、一時しのぎに作ったパッチ。1.3.37までは適用確認済。以降はプログラム側で対処したので試してない。

patch-fix-invisible-trayicon

diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
index 6e4225c..2421ea8 100644
--- dlls/winex11.drv/event.c
+++ dlls/winex11.drv/event.c
@@ -879,7 +879,7 @@ static void X11DRV_ReparentNotify( HWND hwnd, XEvent *xev )
     }
     else
     {
-        if (!(parent = create_foreign_window( event->display, event->parent ))) return;
+        parent = GetDesktopWindow();
         style = (style & ~WS_POPUP) | WS_CHILD;
     }
 

起因

なお、不具合の起因は以下のコミット。
上のパッチはこのコミットの一部を差し戻すので、リグレしても良い場合のみ適用のこと。

commit 5d570706c6aca9acbff855c3ae497b35bdde4648
Date:   Mon Nov 8 15:28:09 2010 +0100

    winex11: Create Win32 windows corresponding to all the ancestors of embedded windows.
    
    This is needed to keep track of the embedded window position by
    handling ConfigureNotify received by ancestors.