xprop: Don't use GDK for reading text properties
This commit is contained in:
parent
4752776ebf
commit
840378ae68
3 changed files with 25 additions and 38 deletions
32
src/ui/ui.c
32
src/ui/ui.c
|
@ -650,38 +650,6 @@ meta_ui_window_should_not_cause_focus (Display *xdisplay,
|
|||
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
|
||||
meta_ui_theme_get_frame_borders (MetaUI *ui,
|
||||
MetaFrameType type,
|
||||
|
|
|
@ -142,9 +142,6 @@ GdkPixbuf* meta_ui_get_default_mini_icon (MetaUI *ui);
|
|||
gboolean meta_ui_window_should_not_cause_focus (Display *xdisplay,
|
||||
Window xwindow);
|
||||
|
||||
char* meta_text_property_to_utf8 (Display *xdisplay,
|
||||
const XTextProperty *prop);
|
||||
|
||||
void meta_ui_set_current_theme (const char *name);
|
||||
gboolean meta_ui_have_a_theme (void);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
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
|
||||
text_property_from_results (GetPropertyResults *results,
|
||||
char **utf8_str_p)
|
||||
|
@ -743,15 +766,14 @@ text_property_from_results (GetPropertyResults *results,
|
|||
XTextProperty tp;
|
||||
|
||||
*utf8_str_p = NULL;
|
||||
|
||||
|
||||
tp.value = results->prop;
|
||||
results->prop = NULL;
|
||||
tp.encoding = results->type;
|
||||
tp.format = results->format;
|
||||
tp.nitems = results->n_items;
|
||||
|
||||
*utf8_str_p = meta_text_property_to_utf8 (results->display->xdisplay,
|
||||
&tp);
|
||||
*utf8_str_p = text_property_to_utf8 (results->display->xdisplay, &tp);
|
||||
|
||||
if (tp.value != NULL)
|
||||
XFree (tp.value);
|
||||
|
|
Loading…
Reference in a new issue