mirror of
https://github.com/brl/mutter.git
synced 2024-11-21 23:50:41 -05:00
xprop: Don't use GDK for reading text properties
This commit is contained in:
parent
4752776ebf
commit
840378ae68
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;
|
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,
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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)
|
||||||
@ -743,15 +766,14 @@ text_property_from_results (GetPropertyResults *results,
|
|||||||
XTextProperty tp;
|
XTextProperty tp;
|
||||||
|
|
||||||
*utf8_str_p = NULL;
|
*utf8_str_p = NULL;
|
||||||
|
|
||||||
tp.value = results->prop;
|
tp.value = results->prop;
|
||||||
results->prop = NULL;
|
results->prop = NULL;
|
||||||
tp.encoding = results->type;
|
tp.encoding = results->type;
|
||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user