The behavior of the flag LV_OBJ_FLAG_OVERFLOW_VISIBLE is not clear to me. I thought that when adding this flag to a button, it would be drawn even outside the limits of its parent.
What MCU/Processor/Board and compiler are you using?
I tried to add LV_OBJ_FLAG_OVERFLOW_VISIBLE to parent and to button. The only way I found to get the result is: Creating a third object with a transparent background and using it as the parent of the header and button. But I would like to save a few bytes of memory and do without this extra object.
I understand your point but I think it’s not the case.
In the code I’ve shown, the object “header” is inside lv_screen_active area and the object “puller” is inside the “header” area.
From the documentation I had understood that the LV_OBJ_FLAG_OVERFLOW_VISIBLE flag would cause the button to be rendered beyond the limit of the parent (which is the header object in the example) and would then be rendered in lv_screen_active:
Does the pulldown thing need to be a child of the header? Otherwise you could always just make it a child of the active screen instead or a child of lv_layer_top().