winex11: Set res_class to the program name for Crostini.

GNOME implements the startup notification protocol correctly which
means it checks StartupWMClass against both WM name (res_name) and
WM class (res_class). Thus it does not need this patch.
The situation is different for desktop environments that thunk to
Wayland such as Crostini. Wayland does not have separate concepts
that WM name and WM class can be mapped to. So Crostini decided to
only use res_class resulting in it trying to match 'Wine' to the
program name stored in StartupWMClass.
While Crostini's choice is unfortunate for Wine, most other
applications (e.g. all GTK applications) already store the same value
in both WM name and class. So in the interest of compatiblity it makes
sense for Wine to do the same.

Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
feature/deterministic
Francois Gouget 2020-04-17 00:47:16 +02:00 committed by Alexandre Julliard
parent 6bdb22108c
commit 6eb05dab7c
1 changed files with 1 additions and 3 deletions

View File

@ -822,10 +822,8 @@ static void set_initial_wm_hints( Display *display, Window window )
/* class hints */
if ((class_hints = XAllocClassHint()))
{
static char wine[] = "Wine";
class_hints->res_name = process_name;
class_hints->res_class = wine;
class_hints->res_class = process_name;
XSetClassHint( display, window, class_hints );
XFree( class_hints );
}