summaryrefslogtreecommitdiff
path: root/atspi/atspi-stateset.c
diff options
context:
space:
mode:
authorMike Gorse <mgorse@novell.com>2011-05-29 17:46:39 -0500
committerMike Gorse <mgorse@novell.com>2011-05-29 17:46:39 -0500
commit7afb51e5093fef46c699d92ee8eee94f5b6886fb (patch)
tree153ccf97b6b3c6c8b6fa1fd263c0306b91c1e328 /atspi/atspi-stateset.c
parente5198adbcc277c6dc22ecf022b4b7504292b7ce0 (diff)
downloadat-spi2-core-enum-types.tar.gz
Enum clean-upsenum-types
Generate enum types where appropriate. Fix prototypes where a method took a "gint" that was really a bitflag. Remove tables of state and role names, since these are now redundant with data from the generated enums and would need to be maintained in parallel. These changes were originally in master but have been backed out since they break compatibility with pygobject 2.26.0, which some users are still using.
Diffstat (limited to 'atspi/atspi-stateset.c')
-rw-r--r--atspi/atspi-stateset.c70
1 files changed, 12 insertions, 58 deletions
diff --git a/atspi/atspi-stateset.c b/atspi/atspi-stateset.c
index a5bcc51c..28e272fc 100644
--- a/atspi/atspi-stateset.c
+++ b/atspi/atspi-stateset.c
@@ -28,52 +28,6 @@ static void atspi_state_set_class_init (AtspiStateSetClass *klass);
G_DEFINE_TYPE (AtspiStateSet, atspi_state_set, G_TYPE_OBJECT)
-static const char *state_names [] =
-{
- "invalid",
- "active",
- "armed",
- "busy",
- "checked",
- "collapsed",
- "defunct",
- "editable",
- "enabled",
- "expandable",
- "expanded",
- "focusable",
- "focused",
- "has-tool-tip",
- "horizontal",
- "iconified",
- "modal",
- "multi-line",
- "multiselectable",
- "opaque",
- "pressed",
- "resizable",
- "selectable",
- "selected",
- "sensitive",
- "showing",
- "singleLine",
- "stale",
- "transient",
- "vertical",
- "visible",
- "manages-descendants",
- "indeterminate",
- "required",
- "truncated",
- "animated",
- "invalid-entry",
- "supports-autocompletion",
- "selectable-text",
- "is-default",
- "visited",
- NULL
-};
-
static void
atspi_state_set_init (AtspiStateSet *set)
{
@@ -123,25 +77,25 @@ _atspi_state_set_new_internal (AtspiAccessible *accessible, gint64 states)
void
atspi_state_set_set_by_name (AtspiStateSet *set, const gchar *name, gboolean enabled)
{
- gint i = 0;
+ GTypeClass *type_class;
+ GEnumValue *value;
+
+ type_class = g_type_class_ref (ATSPI_TYPE_STATE_TYPE);
if (set->accessible &&
!(set->accessible->cached_properties & ATSPI_CACHE_STATES))
return;
- /* TODO: This could perhaps be optimized */
- for (i = 0; state_names [i]; i++)
+ value = g_enum_get_value_by_nick (G_ENUM_CLASS (type_class), name);
+ if (!value)
{
- if (!strcmp (state_names [i], name))
- {
- if (enabled)
- set->states |= ((gint64)1 << i);
- else
- set->states &= ~((gint64)1 << i);
- return;
- }
+ g_warning ("AT-SPI: Attempt to set unknown state '%s'", name);
}
- g_warning ("at-spi: Attempt to set unknown state '%s'", name);
+
+ if (enabled)
+ set->states |= ((gint64)1 << value->value);
+ else
+ set->states &= ~((gint64)1 << value->value);
}
static void