mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 02:40:11 +00:00
x11: ensure WM class is not null even if display is initialized early
With gtkmm, when using `Application()`, the display is initialized
before we know the application name and therefore, the program class
associated to the display is NULL.
Instead of providing a default value, we set it equal to program name
when NULL. Moreover, we give up on capitalizing the class name to keep
the code super simple. Also, not using a capitalized name is
consistent with `gdk_x11_display_open()`. If someone has a good reason
to use a capitalized name, here is how to do it.
```c
class_hint = XAllocClassHint ();
class_hint->res_name = (char *) g_get_prgname ();
if (display_x11->program_class)
{
class_hint->res_class = (char *) g_strdup (display_x11->program_class);
}
else if (class_hint->res_name && class_hint->res_name[0])
{
class_hint->res_class = (char *) g_strdup (class_hint->res_name);
class_hint->res_class[0] = g_ascii_toupper (class_hint->res_class[0]);
}
XSetClassHint (xdisplay, impl->xid, class_hint);
g_free (class_hint->res_class);
XFree (class_hint);
```
Fix eff53c023a
("x11: set a default value for program_class")
This commit is contained in:
parent
ae5e7dc65d
commit
2ebde276d1
@ -204,9 +204,6 @@ static void
|
||||
gdk_x11_display_init (GdkX11Display *self)
|
||||
{
|
||||
self->monitors = g_list_store_new (GDK_TYPE_MONITOR);
|
||||
self->program_class = g_strdup (g_get_prgname ());
|
||||
if (self->program_class && self->program_class[0])
|
||||
self->program_class[0] = g_ascii_toupper (self->program_class[0]);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1282,7 +1282,10 @@ _gdk_x11_display_create_surface (GdkDisplay *display,
|
||||
|
||||
class_hint = XAllocClassHint ();
|
||||
class_hint->res_name = (char *) g_get_prgname ();
|
||||
class_hint->res_class = (char *) display_x11->program_class;
|
||||
if (display_x11->program_class)
|
||||
class_hint->res_class = (char *) display_x11->program_class;
|
||||
else
|
||||
class_hint->res_class = class_hint->res_name;
|
||||
XSetClassHint (xdisplay, impl->xid, class_hint);
|
||||
XFree (class_hint);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user