X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gdk%2Fgdkdisplayprivate.h;h=2c7b511cc13224c4ac208f7e56fb8d548ddc07e2;hb=74cff292d505f8855e78ab0fc37c6ff380d447ca;hp=4772041e056997fbff554884d2ee223f16c85638;hpb=9adb9741559439b713dc1618a5a5a70cd3548b53;p=~andy%2Fgtk diff --git a/gdk/gdkdisplayprivate.h b/gdk/gdkdisplayprivate.h index 4772041e0..2c7b511cc 100644 --- a/gdk/gdkdisplayprivate.h +++ b/gdk/gdkdisplayprivate.h @@ -21,10 +21,16 @@ #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 */ @@ -44,14 +50,14 @@ typedef struct 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. @@ -94,27 +100,26 @@ struct _GdkDisplay 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); @@ -157,24 +162,66 @@ struct _GdkDisplayClass 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); @@ -221,6 +268,19 @@ void _gdk_display_pointer_info_foreach (GdkDisplay *display 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