Содержание Список структур

XCrossingEvent: Событие при перемещении графического курсора мыши через границу окна

       Пересечение мышью границы окна порождает события, описываемые структурой XCrossingEvent. В зависимости от того, входит указатель мыши в видимую область окна или выходит, генерируются события EnterNotify и LeaveNotify соответственно. В целях упорядочивания исходных текстов обработчиков, для каждого из этих событий определены дополнительные названия структуры: XEnterWindowEvent и XLeaveWindowEvent.

Формат структуры:

  typedef struct {
    int type;
    unsigned long serial;
    Bool send_event;
    Display *display;
    Window window;
    Window root;
    Window subwindow;
    Time time;
    int x, y;
    int x_root, y_root;
    int mode;
    int detail;
    Bool same_screen;
    Bool focus;
    unsigned int state;
  } XCrossingEvent;
  typedef XCrossingEvent XEnterWindowEvent;
  typedef XCrossingEvent XLeaveWindowEvent;

       Значение поля type в этой структуре принимает значения EnterNotify или LeaveNotify.

       Поле serial хранит серийный номер последнего обработанного запроса.

       Поле send_event принимает значение True, если событие послано другим клиентом через вызов XSendEvent.

       Поле display хранит указатель на структуру, описывающую дисплей, с которого было получено это событие.

       Поле window хранит идентификатор окна, для которого сгенерировано это событие.

       Поле root указывает на корневое окно, которому принадлежит окно window.

       Поле subwindow будет указывать на дочернее окно окна window в том случае, если событие принадлежит дочернему окну. Иначе в это поле записывается значение None.

       Поле time хранит время, в которое событие было сгенерировано.

       Поля x и y хранят координаты графического курсора мыши относительно окна window.

       Поля x_root и y_root хранят координаты графического курсора мыши относительно корневого окна.

       Поле mode может принимать значения NotifyNormal - в случае обычного перемещения мыши, NotifyGrab - в случае, когда происходит захват мыши и мышь принудительно помещается в окно или NotifyUngrab - когда происходит освобождение мыши и при этом она оказывается за пределами окна.

       Поле detail может принимать значения NotifyAncestor, NotifyVirtual, NotifyInferior, NotifyNonlinear или NotifyNonlinearVirtual.

       Поле same_screen принимает значение True, если событие было порождено на том же экране, которому принадлежит окно window.

       Значение поля focus указывает на наличие или отсутствие фокуса ввода у окна или у окна-потомка.

       Поле state указывает состояние кнопок мыши. Оно является битовой маской. Для каждой кнопки определена своя маска: Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask. Установленный в единицу разряд соответствует нажатому состоянию кнопки. Проверка состояния какой-либо кнопки производится путём логического умножения поля state с битовой маской кнопки. Если результат будет ненулевым, то значит кнопка нажата.


Содержание Список структур