Skip to content

Транзиентность / Модальность

Транзиентность

Приложения не мыслимы без модальных диалогов. Для их реализации окно имеет метод:

void set_transient_for(std::shared_ptr<window> window_, bool docked = true);

Этим методом родительскому окно указывается что некое окно нужно сделать модальным относительно него. Флаг docked указывает что модальное окно должно отображаться в базовом без создания физического системного окна. Если модальное окно больше родительского, этот флаг игнорируется и создается новое системное окно.

Строго говоря, модальности в привычном смысле WinAPI в библиотеке нет. Т. е. вызов init() транзиентного окна не блокирует вызывающий код, но это обходится продолжением логики в коллбэке close_callback передаваемом в init(). Как показала практика, с этим вполне можно жить, а для некоторых вещей это даже оказывается удобнее.