Merge pull request #8050 from FoamyGuy/hidden_refresh_areas
don't consider refresh areas for hidden groups or tilegrids
This commit is contained in:
commit
0da62416a5
|
@ -456,7 +456,9 @@ displayio_area_t *displayio_group_get_refresh_areas(displayio_group_t *self, dis
|
||||||
layer = mp_obj_cast_to_native_base(
|
layer = mp_obj_cast_to_native_base(
|
||||||
self->members->items[i], &displayio_tilegrid_type);
|
self->members->items[i], &displayio_tilegrid_type);
|
||||||
if (layer != MP_OBJ_NULL) {
|
if (layer != MP_OBJ_NULL) {
|
||||||
|
if (!displayio_tilegrid_get_rendered_hidden(layer)) {
|
||||||
tail = displayio_tilegrid_get_refresh_areas(layer, tail);
|
tail = displayio_tilegrid_get_refresh_areas(layer, tail);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
layer = mp_obj_cast_to_native_base(
|
layer = mp_obj_cast_to_native_base(
|
||||||
|
|
|
@ -82,8 +82,13 @@ bool common_hal_displayio_tilegrid_get_hidden(displayio_tilegrid_t *self) {
|
||||||
return self->hidden;
|
return self->hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool displayio_tilegrid_get_rendered_hidden(displayio_tilegrid_t *self) {
|
||||||
|
return self->rendered_hidden;
|
||||||
|
}
|
||||||
|
|
||||||
void common_hal_displayio_tilegrid_set_hidden(displayio_tilegrid_t *self, bool hidden) {
|
void common_hal_displayio_tilegrid_set_hidden(displayio_tilegrid_t *self, bool hidden) {
|
||||||
self->hidden = hidden;
|
self->hidden = hidden;
|
||||||
|
self->rendered_hidden = false;
|
||||||
if (!hidden) {
|
if (!hidden) {
|
||||||
self->full_change = true;
|
self->full_change = true;
|
||||||
}
|
}
|
||||||
|
@ -91,6 +96,7 @@ void common_hal_displayio_tilegrid_set_hidden(displayio_tilegrid_t *self, bool h
|
||||||
|
|
||||||
void displayio_tilegrid_set_hidden_by_parent(displayio_tilegrid_t *self, bool hidden) {
|
void displayio_tilegrid_set_hidden_by_parent(displayio_tilegrid_t *self, bool hidden) {
|
||||||
self->hidden_by_parent = hidden;
|
self->hidden_by_parent = hidden;
|
||||||
|
self->rendered_hidden = false;
|
||||||
if (!hidden) {
|
if (!hidden) {
|
||||||
self->full_change = true;
|
self->full_change = true;
|
||||||
}
|
}
|
||||||
|
@ -582,6 +588,7 @@ displayio_area_t *displayio_tilegrid_get_refresh_areas(displayio_tilegrid_t *sel
|
||||||
bool hidden = self->hidden || self->hidden_by_parent;
|
bool hidden = self->hidden || self->hidden_by_parent;
|
||||||
// Check hidden first because it trumps all other changes.
|
// Check hidden first because it trumps all other changes.
|
||||||
if (hidden) {
|
if (hidden) {
|
||||||
|
self->rendered_hidden = true;
|
||||||
if (!first_draw) {
|
if (!first_draw) {
|
||||||
self->previous_area.next = tail;
|
self->previous_area.next = tail;
|
||||||
return &self->previous_area;
|
return &self->previous_area;
|
||||||
|
|
|
@ -66,6 +66,7 @@ typedef struct {
|
||||||
bool transpose_xy : 1;
|
bool transpose_xy : 1;
|
||||||
bool hidden : 1;
|
bool hidden : 1;
|
||||||
bool hidden_by_parent : 1;
|
bool hidden_by_parent : 1;
|
||||||
|
bool rendered_hidden : 1;
|
||||||
uint8_t padding : 6;
|
uint8_t padding : 6;
|
||||||
} displayio_tilegrid_t;
|
} displayio_tilegrid_t;
|
||||||
|
|
||||||
|
@ -86,4 +87,6 @@ void displayio_tilegrid_update_transform(displayio_tilegrid_t *group, const disp
|
||||||
bool displayio_tilegrid_get_previous_area(displayio_tilegrid_t *self, displayio_area_t *area);
|
bool displayio_tilegrid_get_previous_area(displayio_tilegrid_t *self, displayio_area_t *area);
|
||||||
void displayio_tilegrid_finish_refresh(displayio_tilegrid_t *self);
|
void displayio_tilegrid_finish_refresh(displayio_tilegrid_t *self);
|
||||||
|
|
||||||
|
bool displayio_tilegrid_get_rendered_hidden(displayio_tilegrid_t *self);
|
||||||
|
|
||||||
#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_TILEGRID_H
|
#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_TILEGRID_H
|
||||||
|
|
Loading…
Reference in New Issue