units: Handle negative values in clutter_units_from_string()
In order to allow values like "-2cm" in ClutterScript, clutter_units_from_string() needs to handle negative values as well.
This commit is contained in:
parent
12de1ab9cd
commit
44f283bb72
@ -480,11 +480,21 @@ clutter_units_from_string (ClutterUnits *units,
|
||||
ClutterBackend *backend;
|
||||
ClutterUnitType unit_type;
|
||||
gfloat value;
|
||||
gboolean negative = FALSE;
|
||||
|
||||
g_return_val_if_fail (units != NULL, FALSE);
|
||||
g_return_val_if_fail (str != NULL, FALSE);
|
||||
|
||||
/* strip leading space */
|
||||
while (g_ascii_isspace (*str) || *str == '+')
|
||||
str++;
|
||||
|
||||
if (*str == '-')
|
||||
{
|
||||
negative = TRUE;
|
||||
str++;
|
||||
}
|
||||
|
||||
while (g_ascii_isspace (*str))
|
||||
str++;
|
||||
|
||||
@ -550,6 +560,9 @@ clutter_units_from_string (ClutterUnits *units,
|
||||
if (*str != '\0')
|
||||
return FALSE;
|
||||
|
||||
if (negative)
|
||||
value *= -1;
|
||||
|
||||
backend = clutter_get_default_backend ();
|
||||
|
||||
units->unit_type = unit_type;
|
||||
|
@ -108,6 +108,10 @@ units_string (TestConformSimpleFixture *fixture,
|
||||
g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_POINT);
|
||||
g_assert_cmpfloat (clutter_units_get_unit_value (&units), ==, 0.5f);
|
||||
|
||||
g_assert (clutter_units_from_string (&units, "-3 px") == TRUE);
|
||||
g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_PIXEL);
|
||||
g_assert_cmpfloat (clutter_units_get_unit_value (&units), ==, -3.0);
|
||||
|
||||
g_assert (clutter_units_from_string (&units, "1 omg!!pony") == FALSE);
|
||||
|
||||
clutter_units_from_pt (&units, 24.0);
|
||||
|
Loading…
Reference in New Issue
Block a user