winex11.drv: Set WM_COMMAND property so that xlsclients can list Wine.

Vincent Povirk madewokherd+8cd9 at gmail.com
Sat Mar 13 15:01:47 CST 2010


You should create a WM_CLIENT_LEADER window as described here:
http://tronche.com/gui/x/icccm/sec-5.html

That way, the windows belonging to a single client can be reliably
linked together.

I think you can ignore the requirement that the client leader window
have an id from the session manager. I have several programs running
right now that don't set SM_CLIENT_ID on their client leader window.

On Fri, Mar 12, 2010 at 4:18 AM, Kusanagi Kouichi <slash at ac.auone-net.jp> wrote:
> Signed-off-by: Kusanagi Kouichi <slash at ac.auone-net.jp>
> ---
>  dlls/winex11.drv/window.c |   14 ++++++++++++++
>  1 files changed, 14 insertions(+), 0 deletions(-)
>
> diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
> index 47f7245..73eba1f 100644
> --- a/dlls/winex11.drv/window.c
> +++ b/dlls/winex11.drv/window.c
> @@ -947,6 +947,9 @@ static void set_initial_wm_hints( Display *display, struct x11drv_win_data *data
>     Atom dndVersion = WINE_XDND_VERSION;
>     XClassHint *class_hints;
>     char *process_name = get_process_name();
> +    LPCWSTR cmdline;
> +    int len;
> +    LPSTR buf;
>
>     wine_tsx11_lock();
>
> @@ -969,6 +972,17 @@ static void set_initial_wm_hints( Display *display, struct x11drv_win_data *data
>         XFree( class_hints );
>     }
>
> +    /* set WM_COMMAND */
> +    cmdline = GetCommandLineW();
> +    len = WideCharToMultiByte(CP_UNIXCP, 0, cmdline, -1, NULL, 0, NULL, NULL);
> +    buf = HeapAlloc(GetProcessHeap(), 0, len);
> +    if (buf != NULL)
> +    {
> +        WideCharToMultiByte(CP_UNIXCP, 0, cmdline, -1, buf, len, NULL, NULL);
> +        XSetCommand(display, data->whole_window, &buf, 1);
> +        HeapFree(GetProcessHeap(), 0, buf);
> +    }
> +
>     /* set the WM_CLIENT_MACHINE and WM_LOCALE_NAME properties */
>     XSetWMProperties(display, data->whole_window, NULL, NULL, NULL, 0, NULL, NULL, NULL);
>     /* set the pid. together, these properties are needed so the window manager can kill us if we freeze */
> --
> 1.7.0
>
>
>
>



More information about the wine-devel mailing list