-#define GDK_IS_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DISPLAY))
-#define GDK_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DISPLAY, GdkDisplayClass))
-
-/* Tracks information about the keyboard grab on this display */
-typedef struct
-{
- GdkWindow *window;
- GdkWindow *native_window;
- gulong serial;
- gboolean owner_events;
- guint32 time;
-} GdkKeyboardGrabInfo;
-
-/* Tracks information about which window and position the pointer last was in.
- * This is useful when we need to synthesize events later.
- * Note that we track toplevel_under_pointer using enter/leave events,
- * so in the case of a grab, either with owner_events==FALSE or with the
- * pointer in no clients window the x/y coordinates may actually be outside
- * the window.
- */
-typedef struct
-{
- GdkWindow *toplevel_under_pointer; /* The toplevel window with mouse inside, tracked via native events */
- GdkWindow *window_under_pointer; /* The window that last got sent a normal enter event */
- gdouble toplevel_x, toplevel_y;
- guint32 state;
- guint32 button;
-} GdkPointerWindowInfo;
-
-typedef struct
-{
- guint32 button_click_time[2]; /* The last 2 button click times. */
- GdkWindow *button_window[2]; /* The last 2 windows to receive button presses. */
- gint button_number[2]; /* The last 2 buttons to be pressed. */
- gint button_x[2]; /* The last 2 button click positions. */
- gint button_y[2];
-} GdkMultipleClickInfo;
-
-struct _GdkDisplay
-{
- GObject parent_instance;
-
- /*< private >*/
- GList *GSEAL (queued_events);
- GList *GSEAL (queued_tail);
-
- /* Information for determining if the latest button click
- * is part of a double-click or triple-click
- */
- GHashTable *GSEAL (multiple_click_info);
-
- guint GSEAL (double_click_time); /* Maximum time between clicks in msecs */
- GdkDevice *GSEAL (core_pointer); /* Core pointer device */
-
- const GdkDisplayDeviceHooks *GSEAL (device_hooks); /* Current hooks for querying pointer */
-
- guint GSEAL (closed) : 1; /* Whether this display has been closed */
- guint GSEAL (ignore_core_events) : 1; /* Don't send core motion and button event */
-
- guint GSEAL (double_click_distance); /* Maximum distance between clicks in pixels */
-
- GHashTable *GSEAL (device_grabs);
- GHashTable *GSEAL (motion_hint_info);
-
- /* Hashtable containing a GdkPointerWindowInfo for each device */
- GHashTable *GSEAL (pointers_info);
-
- /* Last reported event time from server */
- guint32 GSEAL (last_event_time);
-
- /* Device manager associated to the display */
- GdkDeviceManager *GSEAL (device_manager);
-};
-
-struct _GdkDisplayClass
-{
- GObjectClass parent_class;
-
- G_CONST_RETURN gchar * (*get_display_name) (GdkDisplay *display);
- gint (*get_n_screens) (GdkDisplay *display);
- GdkScreen * (*get_screen) (GdkDisplay *display,
- gint screen_num);
- GdkScreen * (*get_default_screen) (GdkDisplay *display);
-
-
- /* Signals */
- void (*closed) (GdkDisplay *display,
- gboolean is_error);
-};
-
-/**
- * GdkDisplayPointerHooks:
- * @get_pointer: Obtains the current pointer position and modifier state.
- * The position is given in coordinates relative to the screen containing
- * the pointer, which is returned in @screen.
- * @window_get_pointer: Obtains the window underneath the mouse pointer.
- * Current pointer position and modifier state are returned in @x, @y and
- * @mask. The position is given in coordinates relative to @window.
- * @window_at_pointer: Obtains the window underneath the mouse pointer,
- * returning the location of that window in @win_x, @win_y. Returns %NULL
- * if the window under the mouse pointer is not known to GDK (for example,
- * belongs to another application).
- *
- * A table of pointers to functions for getting quantities related to
- * the current pointer position. Each #GdkDisplay has a table of this type,
- * which can be set using gdk_display_set_pointer_hooks().
- *
- * This is only useful for such low-level tools as an event recorder.
- * Applications should never have any reason to use this facility
- *
- * Since: 2.2
- */
-struct _GdkDisplayPointerHooks
-{
- void (*get_pointer) (GdkDisplay *display,
- GdkScreen **screen,
- gint *x,
- gint *y,
- GdkModifierType *mask);
- GdkWindow* (*window_get_pointer) (GdkDisplay *display,
- GdkWindow *window,
- gint *x,
- gint *y,
- GdkModifierType *mask);
- GdkWindow* (*window_at_pointer) (GdkDisplay *display,
- gint *win_x,
- gint *win_y);
-};
-
-/**
- * GdkDisplayDeviceHooks:
- * @get_device_state: Obtains the current position and modifier state for
- * @device. The position is given in coordinates relative to the window
- * containing the pointer, which is returned in @window.
- * @window_get_device_position: Obtains the window underneath the device
- * position. Current device position and modifier state are returned in
- * @x, @y and @mask. The position is given in coordinates relative to
- * @window.
- * @window_at_device_position: Obtains the window underneath the device
- * position, returning the location of that window in @win_x, @win_y.
- * Returns %NULL if the window under the mouse pointer is not known to
- * GDK (for example, belongs to another application).
- *
- * A table of pointers to functions for getting quantities related to
- * the current device position. Each #GdkDisplay has a table of this type,
- * which can be set using gdk_display_set_device_hooks().
- */
-struct _GdkDisplayDeviceHooks
-{
- void (* get_device_state) (GdkDisplay *display,
- GdkDevice *device,
- GdkScreen **screen,
- gint *x,
- gint *y,
- GdkModifierType *mask);
- GdkWindow * (* window_get_device_position) (GdkDisplay *display,
- GdkDevice *device,
- GdkWindow *window,
- gint *x,
- gint *y,
- GdkModifierType *mask);
- GdkWindow * (* window_at_device_position) (GdkDisplay *display,
- GdkDevice *device,
- gint *win_x,
- gint *win_y);
-};