]> Pileus Git - ~andy/gtk/blobdiff - gdk/gdkdisplayprivate.h
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gdk / gdkdisplayprivate.h
index ceea86bb8c1636c09b8936ef82257c9458d6379b..b4559eb4cb3634247019ef0466fae4bbd1d5d5d6 100644 (file)
@@ -12,9 +12,7 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #ifndef __GDK_DISPLAY_PRIVATE_H__
@@ -31,28 +29,6 @@ G_BEGIN_DECLS
 #define GDK_DISPLAY_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DISPLAY, GdkDisplayClass))
 
 
-typedef struct _GdkDisplayDeviceHooks GdkDisplayDeviceHooks;
-
-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);
-};
-
 typedef struct _GdkDisplayClass GdkDisplayClass;
 
 /* Tracks information about the keyboard grab on this display */
@@ -72,16 +48,29 @@ 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 a touch implicit grab on this display */
+typedef struct
+{
+  GdkDevice *device;
+  GdkEventSequence *sequence;
+
+  GdkWindow *window;
+  GdkWindow *native_window;
+  gulong serial;
+  guint event_mask;
+  guint32 time;
+} GdkTouchGrabInfo;
+
 /* 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,
@@ -97,6 +86,8 @@ typedef struct
   gdouble toplevel_x, toplevel_y;
   guint32 state;
   guint32 button;
+  GdkDevice *last_slave;
+  guint need_touch_press_enter : 1;
 } GdkPointerWindowInfo;
 
 typedef struct
@@ -122,20 +113,20 @@ 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 event_pause_count;       /* How many times events are blocked */
 
   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 */
+  guint flushing_events    : 1;  /* Inside gdk_display_flush_events */
 
+  GArray *touch_implicit_grabs;
   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
@@ -144,7 +135,7 @@ struct _GdkDisplayClass
 
   GType window_type;          /* type for native windows for this display, set in class_init */
 
-  G_CONST_RETURN gchar *     (*get_name)           (GdkDisplay *display);
+  const gchar *              (*get_name)           (GdkDisplay *display);
   gint                       (*get_n_screens)      (GdkDisplay *display);
   GdkScreen *                (*get_screen)         (GdkDisplay *display,
                                                     gint        screen_num);
@@ -187,18 +178,7 @@ 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);
@@ -233,7 +213,7 @@ struct _GdkDisplayClass
                                                      guint32       time,
                                                      gboolean      send_event);
   void                       (*send_selection_notify) (GdkDisplay *dispay,
-                                                       GdkNativeWindow  requestor,
+                                                       GdkWindow        *requestor,
                                                        GdkAtom          selection,
                                                        GdkAtom          target,
                                                        GdkAtom          property,
@@ -296,6 +276,21 @@ gboolean            _gdk_display_end_device_grab      (GdkDisplay       *display
 gboolean            _gdk_display_check_grab_ownership (GdkDisplay       *display,
                                                        GdkDevice        *device,
                                                        gulong            serial);
+void                _gdk_display_add_touch_grab       (GdkDisplay       *display,
+                                                       GdkDevice        *device,
+                                                       GdkEventSequence *sequence,
+                                                       GdkWindow        *window,
+                                                       GdkWindow        *native_window,
+                                                       GdkEventMask      event_mask,
+                                                       unsigned long     serial_start,
+                                                       guint32           time);
+GdkTouchGrabInfo *  _gdk_display_has_touch_grab       (GdkDisplay       *display,
+                                                       GdkDevice        *device,
+                                                       GdkEventSequence *sequence,
+                                                       gulong            serial);
+gboolean            _gdk_display_end_touch_grab       (GdkDisplay       *display,
+                                                       GdkDevice        *device,
+                                                       GdkEventSequence *sequence);
 void                _gdk_display_enable_motion_hints  (GdkDisplay       *display,
                                                        GdkDevice        *device);
 GdkPointerWindowInfo * _gdk_display_get_pointer_info  (GdkDisplay       *display,
@@ -304,6 +299,9 @@ void                _gdk_display_pointer_info_foreach (GdkDisplay       *display
                                                        GdkDisplayPointerInfoForeach func,
                                                        gpointer          user_data);
 gulong              _gdk_display_get_next_serial      (GdkDisplay       *display);
+void                _gdk_display_pause_events         (GdkDisplay       *display);
+void                _gdk_display_unpause_events       (GdkDisplay       *display);
+void                _gdk_display_flush_events         (GdkDisplay       *display);
 void                _gdk_display_event_data_copy      (GdkDisplay       *display,
                                                        const GdkEvent   *event,
                                                        GdkEvent         *new_event);