* 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/>.
*/
/*
GDK_DEBUG_EVENTLOOP = 1 << 10
} GdkDebugFlag;
+typedef enum {
+ GDK_RENDERING_MODE_SIMILAR = 0,
+ GDK_RENDERING_MODE_IMAGE,
+ GDK_RENDERING_MODE_RECORDING
+} GdkRenderingMode;
+
extern GList *_gdk_default_filters;
extern GdkWindow *_gdk_parent_root;
extern guint _gdk_debug_flags;
+extern GdkRenderingMode _gdk_rendering_mode;
#ifdef G_ENABLE_DEBUG
/* Following flag is set for events on the event queue during
* translation and cleared afterwards.
*/
- GDK_EVENT_PENDING = 1 << 0
+ GDK_EVENT_PENDING = 1 << 0,
+
+ /* The following flag is set for:
+ * 1) touch events emulating pointer events
+ * 2) pointer events being emulated by a touch sequence.
+ */
+ GDK_EVENT_POINTER_EMULATED = 1 << 1
} GdkEventFlags;
struct _GdkEventPrivate
{
GObject parent_instance;
- GdkWindowImpl *impl; /* window-system-specific delegate object */
-
+ GdkWindowImpl *impl; /* window-system-specific delegate object */
+
GdkWindow *parent;
GdkVisual *visual;
gint x;
gint y;
-
- gint extension_events;
+
+ GdkEventMask event_mask;
GList *filters;
GList *children;
cairo_pattern_t *background;
-
+
GSList *paint_stack;
-
+
cairo_region_t *update_area;
guint update_freeze_count;
-
+
guint8 window_type;
guint8 depth;
guint8 resize_count;
+ gint8 toplevel_window_type;
+
GdkWindowState state;
-
+
guint guffaw_gravity : 1;
guint input_only : 1;
guint modal_hint : 1;
guint composited : 1;
-
+ guint has_alpha_background : 1;
+
guint destroyed : 2;
guint accept_focus : 1;
guint focus_on_map : 1;
guint shaped : 1;
guint support_multidevice : 1;
-
- GdkEventMask event_mask;
-
- guint update_and_descendants_freeze_count;
+ guint synthesize_crossing_event_queued : 1;
+ guint effective_visibility : 2;
+ guint visibility : 2; /* The visibility wrt the toplevel (i.e. based on clip_region) */
+ guint native_visibility : 2; /* the native visibility of a impl windows */
+ guint viewable : 1; /* mapped and all parents mapped */
+ guint applied_shape : 1;
/* The GdkWindow that has the impl, ref:ed if another window.
* This ref is required to keep the wrapper of the impl window alive
* for as long as any GdkWindow references the impl. */
- GdkWindow *impl_window;
- int abs_x, abs_y; /* Absolute offset in impl */
+ GdkWindow *impl_window;
+
+ guint update_and_descendants_freeze_count;
+
+ gint abs_x, abs_y; /* Absolute offset in impl */
gint width, height;
- guint32 clip_tag;
- cairo_region_t *clip_region; /* Clip region (wrt toplevel) in window coords */
- cairo_region_t *clip_region_with_children; /* Clip region in window coords */
+
+ /* The clip region is the part of the window, in window coordinates
+ that is fully or partially (i.e. semi transparently) visible in
+ the window hierarchy from the toplevel and down */
+ cairo_region_t *clip_region;
+ /* This is the clip region, with additionally all the opaque
+ child windows removed */
+ cairo_region_t *clip_region_with_children;
+ /* The layered region is the subset of clip_region that
+ is covered by non-opaque sibling or ancestor sibling window. */
+ cairo_region_t *layered_region;
+
GdkCursor *cursor;
GHashTable *device_cursor;
- gint8 toplevel_window_type;
- guint synthesize_crossing_event_queued : 1;
- guint effective_visibility : 2;
- guint visibility : 2; /* The visibility wrt the toplevel (i.e. based on clip_region) */
- guint native_visibility : 2; /* the native visibility of a impl windows */
- guint viewable : 1; /* mapped and all parents mapped */
- guint applied_shape : 1;
- guint num_offscreen_children;
GdkWindowPaint *implicit_paint;
GList *outstanding_moves;
cairo_region_t *shape;
cairo_region_t *input_shape;
-
+
cairo_surface_t *cairo_surface;
GList *devices_inside;
GHashTable *source_event_masks;
gulong device_added_handler_id;
gulong device_changed_handler_id;
+
+ guint num_offscreen_children;
};
#define GDK_WINDOW_TYPE(d) (((GDK_WINDOW (d)))->window_type)
void _gdk_event_filter_unref (GdkWindow *window,
GdkEventFilter *filter);
+void _gdk_event_set_pointer_emulated (GdkEvent *event,
+ gboolean emulated);
+gboolean _gdk_event_get_pointer_emulated (GdkEvent *event);
+
void _gdk_event_emit (GdkEvent *event);
GList* _gdk_event_queue_find_first (GdkDisplay *display);
void _gdk_event_queue_remove_link (GdkDisplay *display,
void _gdk_synthesize_crossing_events_for_geometry_change (GdkWindow *changed_window);
-cairo_region_t *_gdk_window_calculate_full_clip_region (GdkWindow *window,
- GdkWindow *base_window,
- gboolean do_children,
- gint *base_x_offset,
- gint *base_y_offset);
gboolean _gdk_window_has_impl (GdkWindow *window);
GdkWindow * _gdk_window_get_impl_window (GdkWindow *window);