// included by gdk2.pp {$IFDEF read_interface_types} PGdkEvent = ^TGdkEvent; TGdkEventFunc = procedure (event:PGdkEvent; data:gpointer); cdecl; { Event filtering } PGdkXEvent = ^TGdkXEvent; TGdkXEvent = procedure; { Can be cast to window system specific even type, XEvent on X11, MSG on Win32. } { Event not handled, continue processesing } { Translated event stored } { Terminate processing, removing event } PGdkFilterReturn = ^TGdkFilterReturn; TGdkFilterReturn = ( GDK_FILTER_CONTINUE, GDK_FILTER_TRANSLATE, GDK_FILTER_REMOVE ); TGdkFilterFunc = function (xevent:PGdkXEvent; event:PGdkEvent; data:gpointer):TGdkFilterReturn; cdecl; { Event types. Nothing: No event occurred. Delete: A window delete event was sent by the window manager. The specified window should be deleted. Destroy: A window has been destroyed. Expose: Part of a window has been uncovered. NoExpose: Same as expose, but no expose event was generated. VisibilityNotify: A window has become fully/partially/not obscured. MotionNotify: The mouse has moved. ButtonPress: A mouse button was pressed. ButtonRelease: A mouse button was release. KeyPress: A key was pressed. KeyRelease: A key was released. EnterNotify: A window was entered. LeaveNotify: A window was exited. FocusChange: The focus window has changed. (The focus window gets keyboard events). Resize: A window has been resized. Map: A window has been mapped. (It is now visible on the screen). Unmap: A window has been unmapped. (It is no longer visible on the screen). Scroll: A mouse wheel was scrolled either up or down. } PGdkEventType = ^TGdkEventType; TGdkEventType = gint; { Event masks. (Used to select what types of events a window will receive). } PGdkEventMask = ^TGdkEventMask; TGdkEventMask = gint32; PGdkVisibilityState = ^TGdkVisibilityState; TGdkVisibilityState = ( GDK_VISIBILITY_UNOBSCURED, GDK_VISIBILITY_PARTIAL, GDK_VISIBILITY_FULLY_OBSCURED ); PGdkScrollDirection = ^TGdkScrollDirection; TGdkScrollDirection = ( GDK_SCROLL_UP, GDK_SCROLL_DOWN, GDK_SCROLL_LEFT, GDK_SCROLL_RIGHT ); { Types of enter/leave notifications. Ancestor: Virtual: Inferior: Nonlinear: NonlinearVirtual: Unknown: An unknown type of enter/leave event occurred. } PGdkNotifyType = ^TGdkNotifyType; TGdkNotifyType = integer; // see below for possible values { Enter/leave event modes. NotifyNormal NotifyGrab NotifyUngrab } PGdkCrossingMode = ^TGdkCrossingMode; TGdkCrossingMode = ( GDK_CROSSING_NORMAL, GDK_CROSSING_GRAB, GDK_CROSSING_UNGRAB ); PGdkPropertyState = ^TGdkPropertyState; TGdkPropertyState = ( GDK_PROPERTY_NEW_VALUE, GDK_PROPERTY_STATE_DELETE // was GDK_PROPERTY_DELETE, but there is also a function ); PGdkWindowState = ^TGdkWindowState; TGdkWindowState = gint; PGdkSettingAction = ^TGdkSettingAction; TGdkSettingAction = ( GDK_SETTING_ACTION_NEW, GDK_SETTING_ACTION_CHANGED, GDK_SETTING_ACTION_DELETED ); PGdkOwnerChange = ^TGdkOwnerChange; TGdkOwnerChange = ( GDK_OWNER_CHANGE_NEW_OWNER, GDK_OWNER_CHANGE_DESTROY, GDK_OWNER_CHANGE_CLOSE ); PGdkEventAny = ^TGdkEventAny; TGdkEventAny = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; end; { If non-zero, how many more events follow. } PGdkEventExpose = ^TGdkEventExpose; TGdkEventExpose = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; area : TGdkRectangle; region : PGdkRegion; count : gint; end; { XXX: does anyone need the X major_code or minor_code fields? } PGdkEventNoExpose = ^TGdkEventNoExpose; TGdkEventNoExpose = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; end; PGdkEventVisibility = ^TGdkEventVisibility; TGdkEventVisibility = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; state : TGdkVisibilityState; end; PGdkEventMotion = ^TGdkEventMotion; TGdkEventMotion = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; time : guint32; x : gdouble; y : gdouble; axes : Pgdouble; state : guint; is_hint : gint16; device : PGdkDevice; x_root : gdouble; y_root : gdouble; end; PGdkEventButton = ^TGdkEventButton; TGdkEventButton = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; time : guint32; x : gdouble; y : gdouble; axes : Pgdouble; state : guint; button : guint; device : PGdkDevice; x_root : gdouble; y_root : gdouble; end; PGdkEventScroll = ^TGdkEventScroll; TGdkEventScroll = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; time : guint32; x : gdouble; y : gdouble; state : guint; direction : TGdkScrollDirection; device : PGdkDevice; x_root : gdouble; y_root : gdouble; end; PGdkEventKey = ^TGdkEventKey; TGdkEventKey = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; time : guint32; state : guint; keyval : guint; length : gint; _string : Pgchar; hardware_keycode : guint16; group : guint8; end; PGdkEventCrossing = ^TGdkEventCrossing; TGdkEventCrossing = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; subwindow : PGdkWindow; time : guint32; x : gdouble; y : gdouble; x_root : gdouble; y_root : gdouble; mode : TGdkCrossingMode; detail : TGdkNotifyType; focus : gboolean; state : guint; end; PGdkEventFocus = ^TGdkEventFocus; TGdkEventFocus = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; _in : gint16; end; PGdkEventConfigure = ^TGdkEventConfigure; TGdkEventConfigure = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; x : gint; y : gint; width : gint; height : gint; end; PGdkEventProperty = ^TGdkEventProperty; TGdkEventProperty = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; atom : TGdkAtom; time : guint32; state : guint; end; PGdkEventSelection = ^TGdkEventSelection; TGdkEventSelection = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; selection : TGdkAtom; target : TGdkAtom; _property : TGdkAtom; time : guint32; requestor : TGdkNativeWindow; end; { This event type will be used pretty rarely. It only is important for XInput aware programs that are drawing their own cursor } PGdkEventProximity = ^TGdkEventProximity; TGdkEventProximity = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; time : guint32; device : PGdkDevice; end; PmatDUMMY = ^TmatDUMMY; TmatDUMMY = record case longint of 0 : ( b : array[0..19] of char ); 1 : ( s : array[0..9] of smallint ); 2 : ( li : array[0..4] of longint ); end; PGdkEventClient = ^TGdkEventClient; TGdkEventClient = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; message_type : TGdkAtom; data_format : gushort; data : record case longint of 0 : ( b : array[0..19] of char ); 1 : ( s : array[0..9] of smallint ); 2 : ( l : array[0..4] of longint ); end; end; PGdkEventSetting = ^TGdkEventSetting; TGdkEventSetting = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; action : TGdkSettingAction; name : Pchar; end; PGdkEventOwnerChange = ^TGdkEventOwnerChange; TGdkEventOwnerChange = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; owner : TGdkNativeWindow; reason : TGdkOwnerChange; selection : TGdkAtom; time : guint32; selection_time : guint32; end; PGdkEventWindowState = ^TGdkEventWindowState; TGdkEventWindowState = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; changed_mask : TGdkWindowState; new_window_state : TGdkWindowState; end; { Event types for DND } PGdkEventDND = ^TGdkEventDND; TGdkEventDND = record _type : TGdkEventType; window : PGdkWindow; send_event : gint8; context : PGdkDragContext; time : guint32; x_root : gshort; y_root : gshort; end; TGdkEvent = record case longint of 0 : ( _type : TGdkEventType ); 1 : ( any : TGdkEventAny ); 2 : ( expose : TGdkEventExpose ); 3 : ( no_expose : TGdkEventNoExpose ); 4 : ( visibility : TGdkEventVisibility ); 5 : ( motion : TGdkEventMotion ); 6 : ( button : TGdkEventButton ); 7 : ( scroll : TGdkEventScroll ); 8 : ( key : TGdkEventKey ); 9 : ( crossing : TGdkEventCrossing ); 10 : ( focus_change : TGdkEventFocus ); 11 : ( configure : TGdkEventConfigure ); 12 : ( _property : TGdkEventProperty ); 13 : ( selection : TGdkEventSelection ); 14 : ( proximity : TGdkEventProximity ); 15 : ( client : TGdkEventClient ); 16 : ( dnd : TGdkEventDND ); 17 : ( window_state : TGdkEventWindowState ); 18 : ( setting : TGdkEventSetting ); end; {$ENDIF read_interface_types} //------------------------------------------------------------------------------ {$IFDEF read_interface_rest} const GDK_NOTHING = -(1); GDK_DELETE = 0; GDK_DESTROY = 1; GDK_EXPOSE = 2; GDK_MOTION_NOTIFY = 3; GDK_BUTTON_PRESS = 4; GDK_2BUTTON_PRESS = 5; GDK_3BUTTON_PRESS = 6; GDK_BUTTON_RELEASE = 7; GDK_KEY_PRESS = 8; GDK_KEY_RELEASE = 9; GDK_ENTER_NOTIFY = 10; GDK_LEAVE_NOTIFY = 11; GDK_FOCUS_CHANGE = 12; GDK_CONFIGURE = 13; GDK_MAP = 14; GDK_UNMAP = 15; GDK_PROPERTY_NOTIFY = 16; GDK_SELECTION_CLEAR = 17; GDK_SELECTION_REQUEST = 18; GDK_SELECTION_NOTIFY = 19; GDK_PROXIMITY_IN = 20; GDK_PROXIMITY_OUT = 21; GDK_DRAG_ENTER = 22; GDK_DRAG_LEAVE = 23; GDK_DRAG_MOTION_EVENT = 24; // was GDK_DRAG_MOTION, which bites gdk_drag_motion GDK_DRAG_STATUS_EVENT = 25; // was GDK_DRAG_STATUS, which bites gdk_drag_status GDK_DROP_START = 26; GDK_DROP_FINISHED = 27; GDK_CLIENT_EVENT = 28; GDK_VISIBILITY_NOTIFY = 29; GDK_NO_EXPOSE = 30; GDK_SCROLL = 31; GDK_WINDOW_STATE = 32; GDK_SETTING = 33; // values for TGdkNotifyType GDK_NOTIFY_ANCESTOR = 0; GDK_NOTIFY_VIRTUAL = 1; GDK_NOTIFY_INFERIOR = 2; GDK_NOTIFY_NONLINEAR = 3; GDK_NOTIFY_NONLINEAR_VIRTUAL = 4; GDK_NOTIFY_UNKNOWN = 5; function GDK_TYPE_EVENT : GType; const GDK_PRIORITY_EVENTS = G_PRIORITY_DEFAULT; GDK_PRIORITY_REDRAW = G_PRIORITY_HIGH_IDLE + 20; GDK_EXPOSURE_MASK = 1 shl 1; GDK_POINTER_MOTION_MASK = 1 shl 2; GDK_POINTER_MOTION_HINT_MASK = 1 shl 3; GDK_BUTTON_MOTION_MASK = 1 shl 4; GDK_BUTTON1_MOTION_MASK = 1 shl 5; GDK_BUTTON2_MOTION_MASK = 1 shl 6; GDK_BUTTON3_MOTION_MASK = 1 shl 7; GDK_BUTTON_PRESS_MASK = 1 shl 8; GDK_BUTTON_RELEASE_MASK = 1 shl 9; GDK_KEY_PRESS_MASK = 1 shl 10; GDK_KEY_RELEASE_MASK = 1 shl 11; GDK_ENTER_NOTIFY_MASK = 1 shl 12; GDK_LEAVE_NOTIFY_MASK = 1 shl 13; GDK_FOCUS_CHANGE_MASK = 1 shl 14; GDK_STRUCTURE_MASK = 1 shl 15; GDK_PROPERTY_CHANGE_MASK = 1 shl 16; GDK_VISIBILITY_NOTIFY_MASK = 1 shl 17; GDK_PROXIMITY_IN_MASK = 1 shl 18; GDK_PROXIMITY_OUT_MASK = 1 shl 19; GDK_SUBSTRUCTURE_MASK = 1 shl 20; GDK_SCROLL_MASK = 1 shl 21; GDK_ALL_EVENTS_MASK = $3FFFFE; GDK_WINDOW_STATE_WITHDRAWN = 1 shl 0; GDK_WINDOW_STATE_ICONIFIED = 1 shl 1; GDK_WINDOW_STATE_MAXIMIZED = 1 shl 2; GDK_WINDOW_STATE_STICKY = 1 shl 3; GDK_WINDOW_STATE_FULLSCREEN = 1 shl 4; GDK_WINDOW_STATE_ABOVE = 1 shl 5; GDK_WINDOW_STATE_BELOW = 1 shl 6; function gdk_event_get_type:GType; cdecl; external gdklib; function gdk_events_pending:gboolean; cdecl; external gdklib; function gdk_event_get:PGdkEvent; cdecl; external gdklib; function gdk_event_peek:PGdkEvent; cdecl; external gdklib; function gdk_event_get_graphics_expose(window:PGdkWindow):PGdkEvent; cdecl; external gdklib; procedure gdk_event_put(event:PGdkEvent); cdecl; external gdklib; function gdk_event_copy(event:PGdkEvent):PGdkEvent; cdecl; external gdklib; procedure gdk_event_free(event:PGdkEvent); cdecl; external gdklib; function gdk_event_get_time(event:PGdkEvent):guint32; cdecl; external gdklib; function gdk_event_get_state(event:PGdkEvent; state:PGdkModifierType):gboolean; cdecl; external gdklib; function gdk_event_get_coords(event:PGdkEvent; x_win:Pgdouble; y_win:Pgdouble):gboolean; cdecl; external gdklib; function gdk_event_get_root_coords(event:PGdkEvent; x_root:Pgdouble; y_root:Pgdouble):gboolean; cdecl; external gdklib; function gdk_event_get_axis(event:PGdkEvent; axis_use:TGdkAxisUse; value:Pgdouble):gboolean; cdecl; external gdklib; procedure gdk_event_handler_set(func:TGdkEventFunc; data:gpointer; notify:TGDestroyNotify); cdecl; external gdklib; procedure gdk_set_show_events(show_events:gboolean); cdecl; external gdklib; function gdk_get_show_events:gboolean; cdecl; external gdklib; function gdk_event_get_screen(event:PGdkEvent): PGdkScreen; cdecl; external gdklib; function gdk_event_new(_type: TGdkEventType): PGdkEvent; cdecl; external gdklib; function gdk_event_send_client_message_for_display(display:PGdkDisplay; event:PGdkEvent; xid:guint32):gboolean; cdecl; external gdklib; procedure gdk_event_set_screen(event: PGdkEvent; screen: PGdkScreen); cdecl; external gdklib; {$ifndef GDK_MULTIHEAD_SAFE} procedure gdk_add_client_message_filter(message_type:TGdkAtom; func:TGdkFilterFunc; data:gpointer); cdecl; external gdklib; function gdk_setting_get(name:Pgchar; var value:TGValue):gboolean; cdecl; external gdklib; {$endif} { GDK_MULTIHEAD_SAFE } {$endif read_interface_rest} //------------------------------------------------------------------------------ {$IFDEF read_implementation} function GDK_TYPE_EVENT : GType; begin GDK_TYPE_EVENT:=gdk_event_get_type; end; {$ENDIF}