frames: Minor refactor

Move extraction of UTF8_STRING properties to a helper, as we'll
want to use it for several properties.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2872>
This commit is contained in:
Carlos Garnacho 2023-02-27 14:12:19 +01:00 committed by Marge Bot
parent 473f58cb5b
commit 6142765262

View File

@ -228,13 +228,14 @@ on_border_changed (GObject *object,
meta_frame_update_extents (frame, border); meta_frame_update_extents (frame, border);
} }
static void static char *
frame_sync_net_wm_name (GtkWindow *window, get_utf8_string_prop (GtkWindow *window,
Window client_window) Window client_window,
Atom prop)
{ {
MetaFrame *frame = META_FRAME (window); MetaFrame *frame = META_FRAME (window);
GdkDisplay *display; GdkDisplay *display;
char *title = NULL; char *str = NULL;
int format; int format;
Atom type; Atom type;
unsigned long nitems, bytes_after; unsigned long nitems, bytes_after;
@ -245,21 +246,33 @@ frame_sync_net_wm_name (GtkWindow *window,
if (XGetWindowProperty (gdk_x11_display_get_xdisplay (display), if (XGetWindowProperty (gdk_x11_display_get_xdisplay (display),
client_window, client_window,
frame->atom__NET_WM_NAME, prop,
0, G_MAXLONG, False, 0, G_MAXLONG, False,
gdk_x11_get_xatom_by_name_for_display (display, gdk_x11_get_xatom_by_name_for_display (display,
"UTF8_STRING"), "UTF8_STRING"),
&type, &format, &type, &format,
&nitems, &bytes_after, &nitems, &bytes_after,
(unsigned char **) &title) != Success) (unsigned char **) &str) != Success)
{ {
gdk_x11_display_error_trap_pop_ignored (display); gdk_x11_display_error_trap_pop_ignored (display);
return; return NULL;
} }
if (gdk_x11_display_error_trap_pop (display)) if (gdk_x11_display_error_trap_pop (display))
return; return NULL;
return str;
}
static void
frame_sync_net_wm_name (GtkWindow *window,
Window client_window)
{
MetaFrame *frame = META_FRAME (window);
char *title;
title = get_utf8_string_prop (window, client_window,
frame->atom__NET_WM_NAME);
gtk_window_set_title (window, title ? title : ""); gtk_window_set_title (window, title ? title : "");
g_free (title); g_free (title);
} }