summaryrefslogtreecommitdiff
path: root/atspi/atspi-stateset.c
diff options
context:
space:
mode:
authorMike Gorse <mgorse@novell.com>2011-05-25 14:36:52 -0500
committerMike Gorse <mgorse@novell.com>2011-05-25 14:36:52 -0500
commit73b811b78954dfb0f8b407354c146d9fbd47dea3 (patch)
tree1c3b214407b08b2c4d57ee9616dcc9ce3795f4f2 /atspi/atspi-stateset.c
parent9ddf777a096440afe521c094544942e85e3ee838 (diff)
downloadat-spi2-core-73b811b78954dfb0f8b407354c146d9fbd47dea3.tar.gz
Remove redundant tables of state and role names
Use the generated enum type to convert state names to numeric values rather than a string table that needs to be maintained in parallel. Also, remove atspi_role_get_name since it was unused, marked deprecated, and relied on a string table which is now redundant with the enum type.
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