Содержание | Список структур |
Это событие возникает в тех случаях, когда возникает необходимость перерисовки окна. Это происходит когда невидимые до этого части окна или все окно стали видимыми (перемещение окна, расположенного сверху, его закрытие и др.). При перемещении окна, если все окно было видимым это событие обычно не возникает - перемещение делается за счет копирования данных в видеобуфере терминала. При перемещении окна событие возникает в том случае, если часть окна находилась за пределами экрана, а при перемещении стала видимой.
Формат структуры:
typedef struct { int type; unsigned long serial; Bool send_event; Display *display; Window window; int x, y; int width, height; int count; } XExposeEvent;
Значение поля type в этой структуре всегда принимает значение Expose.
Поле serial хранит серийный номер запроса, обработка которого привела к появлению этого события.
Поле send_event принимает значение True, если событие послано другим клиентом через вызов XSendEvent.
Поле display хранит указатель на структуру, описывающую дисплей, с которого было получено это событие.
Поле window хранит идентификатор окна, которое получает или теряет фокус.
Поля x и y хранят значения координаты прямоугольной области окна, которую необходимо перерисовать. Значения координат даны относительно координат левого-верхнего угла окна.
Поля width и height определяют размер области перерисовки (ширина и высота соответственно).
Поле mcount, если не установлено в ноль, хранит количество событий перерисовки для этого окна, которые последуют за этим событием. Если значение равно нулю, то значит это событие последнее. Простые приложения, которым не имеет смысл оптимизировать перерисовку окна, могут просто пропускать события с ненулевым значением этого поля и делать полную перерисовку при получении события с нулевым значением поля count.
Содержание | Список структур |