Содержание | Список структур |
Эта структура используется функцией XConfigureWindow для установки размера окна и его поведения при смене размера.
Формат структуры:
typedef struct { int x, y; int width, height; int border_width; Window sibling; int stack_mode; } XWindowChanges;
При конфигурировании окна, совместно с этой структурой используется битовая маска, определяющая, из каких конкретно полей необходимо вносить изменения в конфигурацию окна. Для каждого разряда этой маски определены следующие символьные значения:
#define CWX (1 << 0) /* x */ #define CWY (1 << 1) /* y */ #define CWWidth (1 << 2) /* width */ #define CWHeight (1 << 3) /* height */ #define CWBorderWidth (1 << 4) /* border_width */ #define CWSibling (1 << 5) /* sibling */ #define CWStackMode (1 << 6) /* stack_mode */
Поля x и y служат для указания соответствующих координат окна. Координаты отсчитываются в системе координат родительского окна и указывают на положение внешнего левого-верхнего угла окна.
Поля width и height указывают внутреннюю ширину и высоту окна, которая не включает в себя размеры бордюра. Они должны иметь ненулевое значение, иначе при конфигурировании появится ошибка BadMatch.
Попытка изменять размеры и координаты корневого окна не даст никакого эффекта.
Поле border_width используется для установки ширины борюра, которая указывается точках. Обратите внимание, что если устанавливается только ширина бордюра, то внешний левый угол окна остаётся на месте, а внуренняя часть окна и остальные углы будут передвинуты на разницу в ширине бордюра.
Попытка установить ширину бордюра у окна класса InputOnly приведет к появлению ошибки BadMatch.
Поля sibling и stacking_mode используются в оконных менеджерах весьма редко, поэтомуудивляться не стоит, если нет реакции на значения этих поля. Поле sibling используется для указания окна, по-отношению к которому будет задаваться правило расположения конфигурируемого окна. Правило расположения указывается в поле stacking_order и может быть одним из следующих значений:
Если при помощи маски указать использование поля stack_mode, но не использовать поле sibling, то правило расположения окна несколько изменяется:
См. также: XConfigureWindow.
Содержание | Список структур |