The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

Распределение

Вторая фаза раскладки начинается с этого места. GtkWindow принимает решение о том, сколько места действительно доступно для ребенка, и передает свое решение ребенку. Это называется распределением ребенка, представленное следующей структурой:

typedef struct _GtkAllocation    GtkAllocation;

struct _GtkAllocation
{
  gint16 x;
  gint16 y;
  guint16 width;
  guint16 height;
}

Элементы width и height идентичны GtkRequisition; они представляют размер виджета. GtkAllocation также включает координаты ребенка относительно его родителя. Структуры GtkAllocation присваиваются детям их родительским контейнером.

От виджетов требуется, чтобы они обращали внимание на GtkAllocation, передаваемый им. GtkRequisition всего лиш запрос; виджеты должны быть способными справляться с любым размером.

В приведенном описании процесса раскладки легко увидеть роль, которую играют контейнеры. Их работа состоит в том, чтобы собрать требование размера каждого ребенка в одно требование, передаваемое выше по дереву виджетов; затем разделить полученное распределение между своими детьми. Как это точно происходит -- зависит от конкретного контейнера.


Linux Land
2000-09-15



Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру