Browse Source

Use simple array for enum inspector fields as this works best with native equivalent

Josh Engebretson 10 years ago
parent
commit
46e071734a
1 changed files with 9 additions and 13 deletions
  1. 9 13
      Source/AtomicJS/Javascript/JSComponentFile.cpp

+ 9 - 13
Source/AtomicJS/Javascript/JSComponentFile.cpp

@@ -376,22 +376,18 @@ bool JSComponentFile::BeginLoad(Deserializer& source)
                                     {
                                     {
                                         js_to_variant(ctx, -1, defaultValue);
                                         js_to_variant(ctx, -1, defaultValue);
                                     }
                                     }
-                                    else if (duk_is_object(ctx, -1))
+                                    else if (duk_is_array(ctx, -1))
                                     {
                                     {
-                                        duk_enum(ctx, -1, DUK_ENUM_OWN_PROPERTIES_ONLY);
-
-                                        while (duk_next(ctx, -1, 1)) {
-
-                                            Variant enumValue = (float) duk_to_number(ctx, -2);
-                                            String enumName = duk_get_string(ctx, -1);
-
-                                            enums_[name].Push(EnumInfo(enumName, enumValue));
-
-                                            duk_pop_2(ctx);  // pop key value
+                                        int enumLength = duk_get_length(ctx, -1);
+
+                                        for (unsigned i = 0; i < enumLength; i++)
+                                        {
+                                            duk_get_prop_index(ctx, -1, i);
+                                            String enumName = duk_require_string(ctx, -1);
+                                            enums_[name].Push(EnumInfo(enumName, Variant(float(i))));
+                                            duk_pop(ctx);
                                         }
                                         }
 
 
-                                        duk_pop(ctx);  // pop enum object
-
                                     }
                                     }
 
 
                                     duk_pop(ctx);
                                     duk_pop(ctx);