xprop: Don't use GDK for reading text properties

This commit is contained in:
Jasper St. Pierre 2014-04-06 17:03:53 -04:00
parent 4752776ebf
commit 840378ae68
3 changed files with 25 additions and 38 deletions

View File

@ -650,38 +650,6 @@ meta_ui_window_should_not_cause_focus (Display *xdisplay,
return FALSE; return FALSE;
} }
char*
meta_text_property_to_utf8 (Display *xdisplay,
const XTextProperty *prop)
{
GdkDisplay *display;
char **list;
int count;
char *retval;
list = NULL;
display = gdk_x11_lookup_xdisplay (xdisplay);
count = gdk_text_property_to_utf8_list_for_display (display,
gdk_x11_xatom_to_atom_for_display (display, prop->encoding),
prop->format,
prop->value,
prop->nitems,
&list);
if (count == 0)
retval = NULL;
else
{
retval = list[0];
list[0] = g_strdup (""); /* something to free */
}
g_strfreev (list);
return retval;
}
void void
meta_ui_theme_get_frame_borders (MetaUI *ui, meta_ui_theme_get_frame_borders (MetaUI *ui,
MetaFrameType type, MetaFrameType type,

View File

@ -142,9 +142,6 @@ GdkPixbuf* meta_ui_get_default_mini_icon (MetaUI *ui);
gboolean meta_ui_window_should_not_cause_focus (Display *xdisplay, gboolean meta_ui_window_should_not_cause_focus (Display *xdisplay,
Window xwindow); Window xwindow);
char* meta_text_property_to_utf8 (Display *xdisplay,
const XTextProperty *prop);
void meta_ui_set_current_theme (const char *name); void meta_ui_set_current_theme (const char *name);
gboolean meta_ui_have_a_theme (void); gboolean meta_ui_have_a_theme (void);

View File

@ -736,6 +736,29 @@ meta_prop_get_cardinal_with_atom_type (MetaDisplay *display,
return cardinal_with_atom_type_from_results (&results, prop_type, cardinal_p); return cardinal_with_atom_type_from_results (&results, prop_type, cardinal_p);
} }
static char *
text_property_to_utf8 (Display *xdisplay,
const XTextProperty *prop)
{
char *ret = NULL;
char **local_list = NULL;
int count = 0;
int res;
res = XmbTextPropertyToTextList (xdisplay, prop, &local_list, &count);
if (res == XNoMemory || res == XLocaleNotSupported || res == XConverterNotFound)
goto out;
if (count == 0)
goto out;
ret = g_strdup (local_list[0]);
out:
meta_XFree (local_list);
return ret;
}
static gboolean static gboolean
text_property_from_results (GetPropertyResults *results, text_property_from_results (GetPropertyResults *results,
char **utf8_str_p) char **utf8_str_p)
@ -750,8 +773,7 @@ text_property_from_results (GetPropertyResults *results,
tp.format = results->format; tp.format = results->format;
tp.nitems = results->n_items; tp.nitems = results->n_items;
*utf8_str_p = meta_text_property_to_utf8 (results->display->xdisplay, *utf8_str_p = text_property_to_utf8 (results->display->xdisplay, &tp);
&tp);
if (tp.value != NULL) if (tp.value != NULL)
XFree (tp.value); XFree (tp.value);