summaryrefslogtreecommitdiff
path: root/shared-module/displayio/Group.c
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2019-01-14 17:26:36 -0800
committerScott Shawcroft <scott@tannewt.org>2019-01-14 17:29:19 -0800
commit747f2cfe267628fda8487c533ce7a5ab10a9388f (patch)
treef8d8d56e7682e0627801897780556dc340b5411e /shared-module/displayio/Group.c
parent72d993d60c5e5238942491df00776ca31f9758a1 (diff)
Add subclass support to displayio.
Also, swap make_news to accept a kwarg map and refine param checking. Fixes #1237
Diffstat (limited to 'shared-module/displayio/Group.c')
-rw-r--r--shared-module/displayio/Group.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/shared-module/displayio/Group.c b/shared-module/displayio/Group.c
index 93ac35964..b9923128a 100644
--- a/shared-module/displayio/Group.c
+++ b/shared-module/displayio/Group.c
@@ -38,6 +38,13 @@ void common_hal_displayio_group_append(displayio_group_t* self, mp_obj_t layer)
if (self->size == self->max_size) {
mp_raise_RuntimeError(translate("Group full"));
}
+ mp_obj_t native_layer = mp_instance_cast_to_native_base(layer, &displayio_group_type);
+ if (native_layer == MP_OBJ_NULL) {
+ native_layer = mp_instance_cast_to_native_base(layer, &displayio_sprite_type);
+ }
+ if (native_layer == MP_OBJ_NULL) {
+ mp_raise_ValueError(translate("Layer must be a Group or Sprite subclass."));
+ }
self->children[self->size] = layer;
self->size++;
self->needs_refresh = true;