mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-11 19:30:10 +00:00
GtkStyleContext: add some aux. a11y api
This function translates the fg/bg color into atk attributes.
This commit is contained in:
parent
1f2b8a6545
commit
1164ceb4fc
@ -4313,3 +4313,58 @@ gtk_render_icon (GtkStyleContext *context,
|
|||||||
|
|
||||||
cairo_restore (cr);
|
cairo_restore (cr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static AtkAttributeSet *
|
||||||
|
add_attribute (AtkAttributeSet *attributes,
|
||||||
|
AtkTextAttribute attr,
|
||||||
|
const gchar *value)
|
||||||
|
{
|
||||||
|
AtkAttribute *at;
|
||||||
|
|
||||||
|
at = g_new (AtkAttribute, 1);
|
||||||
|
at->name = g_strdup (atk_text_attribute_get_name (attr));
|
||||||
|
at->value = g_strdup (value);
|
||||||
|
|
||||||
|
return g_slist_prepend (attributes, at);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* _gtk_style_context_get_attributes:
|
||||||
|
* @attributes: a #AtkAttributeSet to add attributes to
|
||||||
|
* @context: the #GtkStyleContext to get attributes from
|
||||||
|
* @flags: the state to use with @context
|
||||||
|
*
|
||||||
|
* Adds the foreground and background color from @context to
|
||||||
|
* @attributes, after translating them to ATK attributes.
|
||||||
|
*
|
||||||
|
* This is a convenience function that can be used in
|
||||||
|
* implementing the #AtkText interface in widgets.
|
||||||
|
*
|
||||||
|
* Returns: the modified #AtkAttributeSet
|
||||||
|
*/
|
||||||
|
AtkAttributeSet *
|
||||||
|
_gtk_style_context_get_attributes (AtkAttributeSet *attributes,
|
||||||
|
GtkStyleContext *context,
|
||||||
|
GtkStateFlags flags)
|
||||||
|
{
|
||||||
|
GdkRGBA color;
|
||||||
|
gchar *value;
|
||||||
|
|
||||||
|
gtk_style_context_get_background_color (context, flags, &color);
|
||||||
|
value = g_strdup_printf ("%u,%u,%u",
|
||||||
|
(guint) ceil (color.red * 65536 - color.red),
|
||||||
|
(guint) ceil (color.green * 65536 - color.green),
|
||||||
|
(guint) ceil (color.blue * 65536 - color.blue));
|
||||||
|
attributes = add_attribute (attributes, ATK_TEXT_ATTR_BG_COLOR, value);
|
||||||
|
g_free (value);
|
||||||
|
|
||||||
|
gtk_style_context_get_color (context, flags, &color);
|
||||||
|
value = g_strdup_printf ("%u,%u,%u",
|
||||||
|
(guint) ceil (color.red * 65536 - color.red),
|
||||||
|
(guint) ceil (color.green * 65536 - color.green),
|
||||||
|
(guint) ceil (color.blue * 65536 - color.blue));
|
||||||
|
attributes = add_attribute (attributes, ATK_TEXT_ATTR_FG_COLOR, value);
|
||||||
|
g_free (value);
|
||||||
|
|
||||||
|
return attributes;
|
||||||
|
}
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include <gtk/gtkstyleprovider.h>
|
#include <gtk/gtkstyleprovider.h>
|
||||||
#include <gtk/gtkwidgetpath.h>
|
#include <gtk/gtkwidgetpath.h>
|
||||||
#include <gtk/gtkborder.h>
|
#include <gtk/gtkborder.h>
|
||||||
|
#include <atk/atk.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
@ -858,6 +859,11 @@ void gtk_render_icon (GtkStyleContext *context,
|
|||||||
gdouble x,
|
gdouble x,
|
||||||
gdouble y);
|
gdouble y);
|
||||||
|
|
||||||
|
/* Accessibility support */
|
||||||
|
AtkAttributeSet *_gtk_style_context_get_attributes (AtkAttributeSet *attributes,
|
||||||
|
GtkStyleContext *context,
|
||||||
|
GtkStateFlags flags);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GTK_STYLE_CONTEXT_H__ */
|
#endif /* __GTK_STYLE_CONTEXT_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user