diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-10-25 12:20:55 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-10-25 12:20:55 -0400 |
commit | fce455ae0b050b7196667a6e131a633ddbd90823 (patch) | |
tree | 1780f4cd1e046d88374712d009ee35a1823dcd71 /gtk/gtkaccessiblevalue.c | |
parent | e050a2661c8eefa4e90197f6bddc86daf0b50b34 (diff) | |
download | gtk+-fce455ae0b050b7196667a6e131a633ddbd90823.tar.gz |
a11y: Parse booleans in ui files as expected
Accept the same syntax for booleans as GtkBuilder
does elsewhere.
Diffstat (limited to 'gtk/gtkaccessiblevalue.c')
-rw-r--r-- | gtk/gtkaccessiblevalue.c | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/gtk/gtkaccessiblevalue.c b/gtk/gtkaccessiblevalue.c index 5a4edd5d85..c7ac423bd0 100644 --- a/gtk/gtkaccessiblevalue.c +++ b/gtk/gtkaccessiblevalue.c @@ -45,6 +45,7 @@ #include "gtkaccessiblevalueprivate.h" #include "gtkaccessible.h" +#include "gtkbuilderprivate.h" #include "gtkenums.h" #include <math.h> @@ -1344,38 +1345,25 @@ gtk_accessible_value_parse (const GtkAccessibleCollect *cstate, { case GTK_ACCESSIBLE_COLLECT_BOOLEAN: { - if (strncmp (str, "true", 4) == 0) - res = gtk_boolean_accessible_value_new (TRUE); - else if (strncmp (str, "false", 5) == 0) - res = gtk_boolean_accessible_value_new (FALSE); - else if (collects_undef && strncmp (str, "undefined", 9) == 0) + gboolean b; + + if (collects_undef && strncmp (str, "undefined", 9) == 0) res = gtk_undefined_accessible_value_new (); - else - g_set_error (error, GTK_ACCESSIBLE_VALUE_ERROR, - GTK_ACCESSIBLE_VALUE_ERROR_INVALID_TOKEN, - "Invalid token ā%sā for boolean attribute", - str); + else if (_gtk_builder_boolean_from_string (str, &b, error)) + res = gtk_boolean_accessible_value_new (b); } break; case GTK_ACCESSIBLE_COLLECT_TRISTATE: { - if (strncmp (str, "true", 4) == 0) - res = gtk_tristate_accessible_value_new (GTK_ACCESSIBLE_TRISTATE_TRUE); - else if (strncmp (str, "false", 5) == 0) - res = gtk_tristate_accessible_value_new (GTK_ACCESSIBLE_TRISTATE_FALSE); + gboolean b; + + if (collects_undef && strncmp (str, "undefined", 9) == 0) + res = gtk_undefined_accessible_value_new (); else if (strncmp (str, "mixed", 5) == 0) res = gtk_tristate_accessible_value_new (GTK_ACCESSIBLE_TRISTATE_MIXED); - else if (collects_undef && strncmp (str, "undefined", 9) == 0) - res = gtk_undefined_accessible_value_new (); - else - { - g_set_error (error, GTK_ACCESSIBLE_VALUE_ERROR, - GTK_ACCESSIBLE_VALUE_ERROR_INVALID_TOKEN, - "Invalid token ā%sā for tristate attribute", - str); - return NULL; - } + else if (_gtk_builder_boolean_from_string (str, &b, error)) + res = gtk_boolean_accessible_value_new (b); } break; |