GR_EVENT_BUTTON

Name

GR_EVENT_BUTTON -- Mouse button event structure

Synopsis

typedef struct 
{
    GR_EVENT_TYPE   type;
    GR_WINDOW_ID    wid;
    GR_WINDOW_ID    subwid;
    GR_COORD        rootx;
    GR_COORD        rooty;
    GR_COORD        x;
    GR_COORD        y;
    int             buttons;
    int             changebuttons;
    int             modifiers;
} GR_EVENT_BUTTON;
  

Description

The GR_EVENT_BUTTON structure is used by nano-X to report changes in the status of the mouse buttons. When a mouse button state changes only one mouse button event is sent to a client. The event is sent to the highest window that has selected for the event. If the window's parent has also selected for button events, nano-X will not send an additional event for the parent window.

If a window has selected both GR_EVENT_TYPE_BUTTON_DOWN and GR_EVENT_TYPE_BUTTON_UP events, nano-X will grab the mouse for that window when a mouse button is first pressed down. While the mouse is grabbed, no mouse button or position events will be delivered to any window besides the window that nano-X grabbed the mouse for. The mouse will remain grabbed until all of the mouse buttons are released.

Fields

TypeNameDescription
GR_EVENT_TYPEtypeThe event type will be either a GR_EVENT_TYPE_BUTTON_DOWN or a GR_EVENT_TYPE_BUTTON_UP type.
GR_WINDOW_IDwidThe ID of the window that the mouse button event is being sent to. If the mouse has been grabbed then this is the window that nano-X grabbed the mouse for. In this case the mouse may not actually be positioned over the window any longer. The mouse may be over a child window or it may be outside the window that grabbed the mouse.
GR_WINDOW_IDsubwidThe ID of the window that the mouse button event occurs in. Generally this field will be the same as wid, but in some cases if the mouse event occurs in a decendant of wid, then this field indicates that child window.
GR_COORDrootxThe X coordinate of the mouse pointer relative to the root window.
GR_COORDrootyThe Y coordinate of the mouse pointer relative to the root window.
GR_COORDxThe X coordinate of the mouse pointer relative to the window wid.
GR_COORDyThe Y coordinate of the mouse pointer relative to the window wid.
intbuttonsIndicates the buttons that are being pressed. This field will be 0 if all buttons are released or a bitwise OR of GR_BUTTON_R, GR_BUTTON_M and/or GR_BUTTON_L if one or more buttons are pressed.
intchangebuttonsIndicates the buttons that have just changed state. If the event type is GR_EVENT_TYPE_BUTTON_DOWN, then this field indicates the button(s) that were just pressed. If the event type is GR_EVENT_TYPE_BUTTON_UP, then this field indicates the button(s) that were just released.
intmodifiersIndicates the status of the keyboard modifier keys. This field will be 0 if no modifiers are pressed, or a bitwise OR of one or more of GR_MODIFIER_CTRL, GR_MODIFIER_META, GR_MODIFIER_SHIFT, GR_MODIFIER_LOCK, GR_MODIFIER_NUMLOCK and/or GR_MODIFIER_SCROLLLOCK if one or more modifier keys is pressed.

See Also

GR_EVENT, GR_EVENT_MOUSE, GR_EVENT_KEYSTROKE.