PanelWidget
Базовый контейнер для виджетов с несколькими детьми: управление иерархией, отложенные мутации и порядок отрисовки.
Обзор
PanelWidget — базовый абстрактный класс для всех контейнеров с несколькими дочерними элементами в UniGUI. Он управляет владением детьми, назначает ссылки на родителей, прокидывает UIContext и обрабатывает очередь отложенных изменений, благодаря чему добавление и удаление детей во время событий или отрисовки абсолютно безопасно.
По умолчанию PanelWidget размещает обычных детей по принципу overlay/stack в границах контента, а абсолютные элементы позиционирует через AbsoluteLayoutEngine.
Отложенные мутации и снимки
- Очередь мутаций: Изменения через
addChild(),removeChild()иclearChildren()ставятся в очередь и применяются вызовомapplyQueuedMutations()перед фазами компоновки и отрисовки. - Кэш-массив детей: Горячие циклы tick и render используют кэшированный массив
childSnapshot(), исключая аллокации итераторов. - Z-порядок и отсечение: Дети сортируются согласно
ZOrderи отсекаются по границам видимости.
Управление дочерними элементами
PanelWidget panel = new PanelWidget();
panel.addChild(new Label("Заголовок"));
panel.addChild(new Button("Нажми"));
panel.removeChild(oldChild);
Связанные ссылки
API
PanelWidget::addChild(Widget)
Добавить ребёнка
Ставит дочерний виджет в очередь на добавление в конец списка.
| Параметр | Тип | Описание |
|---|---|---|
child |
Widget |
Добавляемый дочерний виджет |
PanelWidget::insertChild(int, Widget)
Вставить дочерний виджет
Ставит в очередь вставку дочернего виджета по указанному индексу.
| Параметр | Тип | Описание |
|---|---|---|
index |
int |
индекс в списке детей (с 0) |
child |
Widget |
Добавляемый дочерний виджет |
PanelWidget::removeChild(Widget)
Удалить ребёнка
Ставит дочерний виджет в очередь на удаление из контейнера.
| Параметр | Тип | Описание |
|---|---|---|
child |
Widget |
Удаляемый дочерний виджет |
PanelWidget::clearChildren()
Очистить детей
Ставит в очередь удаление и освобождение всех дочерних виджетов.
PanelWidget::children()
Дочерние виджеты
Возвращает дочерние элементы в порядке обхода/раскладки.
Возвращает List: список дочерних элементов.