#define __GDK_DISPLAY_PRIVATE_H__
#include "gdkdisplay.h"
+#include "gdkwindow.h"
#include "gdkcursor.h"
G_BEGIN_DECLS
+#define GDK_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DISPLAY, GdkDisplayClass))
+#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))
+
+
typedef struct _GdkDisplayClass GdkDisplayClass;
/* Tracks information about the keyboard grab on this display */
GdkWindow *native_window;
gulong serial_start;
gulong serial_end; /* exclusive, i.e. not active on serial_end */
- gboolean owner_events;
guint event_mask;
- gboolean implicit;
guint32 time;
GdkGrabOwnership ownership;
guint activated : 1;
guint implicit_ungrab : 1;
+ guint owner_events : 1;
+ guint implicit : 1;
} GdkDeviceGrabInfo;
/* Tracks information about which window and position the pointer last was in.
guint double_click_time; /* Maximum time between clicks in msecs */
GdkDevice *core_pointer; /* Core pointer device */
- const GdkDisplayDeviceHooks *device_hooks; /* Hooks for querying pointer */
-
guint closed : 1; /* Whether this display has been closed */
guint ignore_core_events : 1; /* Don't send core motion and button event */
- guint double_click_distance; /* Maximum distance between clicks in pixels */
-
GHashTable *device_grabs;
GHashTable *motion_hint_info;
+ GdkDeviceManager *device_manager;
GHashTable *pointers_info; /* GdkPointerWindowInfo for each device */
guint32 last_event_time; /* Last reported event time from server */
- GdkDeviceManager *device_manager;
+ guint double_click_distance; /* Maximum distance between clicks in pixels */
};
struct _GdkDisplayClass
{
GObjectClass parent_class;
- G_CONST_RETURN gchar * (*get_name) (GdkDisplay *display);
+ GType window_type; /* type for native windows for this display, set in class_init */
+
+ const gchar * (*get_name) (GdkDisplay *display);
gint (*get_n_screens) (GdkDisplay *display);
GdkScreen * (*get_screen) (GdkDisplay *display,
gint screen_num);
gint y);
GList * (*list_devices) (GdkDisplay *display);
- gboolean (*send_client_message) (GdkDisplay *display,
- GdkEvent *event,
- GdkNativeWindow winid);
- void (*add_client_message_filter) (GdkDisplay *display,
- GdkAtom message_type,
- GdkFilterFunc func,
- gpointer data);
GdkAppLaunchContext * (*get_app_launch_context) (GdkDisplay *display);
- GdkNativeWindow (*get_drag_protocol) (GdkDisplay *display,
- GdkNativeWindow winid,
- GdkDragProtocol *protocol,
- guint *version);
void (*before_process_all_updates) (GdkDisplay *display);
void (*after_process_all_updates) (GdkDisplay *display);
gulong (*get_next_serial) (GdkDisplay *display);
+ void (*notify_startup_complete) (GdkDisplay *display,
+ const gchar *startup_id);
+ void (*event_data_copy) (GdkDisplay *display,
+ const GdkEvent *event,
+ GdkEvent *new_event);
+ void (*event_data_free) (GdkDisplay *display,
+ GdkEvent *event);
+ void (*create_window_impl) (GdkDisplay *display,
+ GdkWindow *window,
+ GdkWindow *real_parent,
+ GdkScreen *screen,
+ GdkEventMask event_mask,
+ GdkWindowAttr *attributes,
+ gint attributes_mask);
+
+ GdkKeymap * (*get_keymap) (GdkDisplay *display);
+ void (*push_error_trap) (GdkDisplay *display);
+ gint (*pop_error_trap) (GdkDisplay *display,
+ gboolean ignore);
+
+ GdkWindow * (*get_selection_owner) (GdkDisplay *display,
+ GdkAtom selection);
+ gboolean (*set_selection_owner) (GdkDisplay *display,
+ GdkWindow *owner,
+ GdkAtom selection,
+ guint32 time,
+ gboolean send_event);
+ void (*send_selection_notify) (GdkDisplay *dispay,
+ GdkWindow *requestor,
+ GdkAtom selection,
+ GdkAtom target,
+ GdkAtom property,
+ guint32 time);
+ gint (*get_selection_property) (GdkDisplay *display,
+ GdkWindow *requestor,
+ guchar **data,
+ GdkAtom *type,
+ gint *format);
+ void (*convert_selection) (GdkDisplay *display,
+ GdkWindow *requestor,
+ GdkAtom selection,
+ GdkAtom target,
+ guint32 time);
+
+ gint (*text_property_to_utf8_list) (GdkDisplay *display,
+ GdkAtom encoding,
+ gint format,
+ const guchar *text,
+ gint length,
+ gchar ***list);
+ gchar * (*utf8_to_string_target) (GdkDisplay *display,
+ const gchar *text);
+
/* Signals */
void (*closed) (GdkDisplay *display,
gboolean is_error);
GdkDisplayPointerInfoForeach func,
gpointer user_data);
gulong _gdk_display_get_next_serial (GdkDisplay *display);
+void _gdk_display_event_data_copy (GdkDisplay *display,
+ const GdkEvent *event,
+ GdkEvent *new_event);
+void _gdk_display_event_data_free (GdkDisplay *display,
+ GdkEvent *event);
+void _gdk_display_create_window_impl (GdkDisplay *display,
+ GdkWindow *window,
+ GdkWindow *real_parent,
+ GdkScreen *screen,
+ GdkEventMask event_mask,
+ GdkWindowAttr *attributes,
+ gint attributes_mask);
+GdkWindow * _gdk_display_create_window (GdkDisplay *display);
G_END_DECLS