gdkinternals.h 21.9 KB
Newer Older
Cody Russell's avatar
Cody Russell committed
1
/* GDK - The GIMP Drawing Kit
2 3 4
 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
 *
 * This library is free software; you can redistribute it and/or
5
 * modify it under the terms of the GNU Lesser General Public
6 7 8 9 10 11
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
12
 * Lesser General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU Lesser General Public
15 16 17 18 19 20
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

/*
21
 * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
22 23 24 25 26 27 28
 * file for a list of people on the GTK+ Team.  See the ChangeLog
 * files for a list of changes.  These files are distributed with
 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
 */

/* Uninstalled header defining types and functions internal to GDK */

29 30 31
#ifndef __GDK_INTERNALS_H__
#define __GDK_INTERNALS_H__

32
#include <gio/gio.h>
33
#include <gdk/gdktypes.h>
34
#include <gdk/gdkwindow.h>
35
#include <gdk/gdkwindowimpl.h>
36 37
#include <gdk/gdkprivate.h>

38 39
G_BEGIN_DECLS

40 41 42 43 44 45
/**********************
 * General Facilities * 
 **********************/

/* Debugging support */

46 47 48 49 50 51 52 53 54 55 56 57 58 59
typedef struct _GdkColorInfo           GdkColorInfo;
typedef struct _GdkEventFilter	       GdkEventFilter;
typedef struct _GdkClientFilter	       GdkClientFilter;

typedef enum {
  GDK_COLOR_WRITEABLE = 1 << 0
} GdkColorInfoFlags;

struct _GdkColorInfo
{
  GdkColorInfoFlags flags;
  guint ref_count;
};

60 61 62 63
typedef enum {
  GDK_EVENT_FILTER_REMOVED = 1 << 0
} GdkEventFilterFlags;

64 65 66
struct _GdkEventFilter {
  GdkFilterFunc function;
  gpointer data;
67 68
  GdkEventFilterFlags flags;
  guint ref_count;
69 70 71 72 73 74 75 76
};

struct _GdkClientFilter {
  GdkAtom       type;
  GdkFilterFunc function;
  gpointer      data;
};

77 78 79 80
typedef enum {
  GDK_DEBUG_MISC          = 1 << 0,
  GDK_DEBUG_EVENTS        = 1 << 1,
  GDK_DEBUG_DND           = 1 << 2,
Jacob Berkman's avatar
Jacob Berkman committed
81 82
  GDK_DEBUG_XIM           = 1 << 3,
  GDK_DEBUG_NOGRABS       = 1 << 4,
83
  GDK_DEBUG_COLORMAP	  = 1 << 5,
84 85 86 87 88 89
  GDK_DEBUG_INPUT	  = 1 << 6,
  GDK_DEBUG_CURSOR	  = 1 << 7,
  GDK_DEBUG_MULTIHEAD	  = 1 << 8,
  GDK_DEBUG_XINERAMA	  = 1 << 9,
  GDK_DEBUG_DRAW	  = 1 <<10,
  GDK_DEBUG_EVENTLOOP     = 1 <<11
90 91
} GdkDebugFlag;

92 93 94 95
extern GList            *_gdk_default_filters;
extern GdkWindow  	*_gdk_parent_root;

extern guint _gdk_debug_flags;
96
extern gboolean _gdk_native_windows;
97 98 99 100

#ifdef G_ENABLE_DEBUG

#define GDK_NOTE(type,action)		     G_STMT_START { \
101
    if (_gdk_debug_flags & GDK_DEBUG_##type)		    \
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
       { action; };			     } G_STMT_END

#else /* !G_ENABLE_DEBUG */

#define GDK_NOTE(type,action)

#endif /* G_ENABLE_DEBUG */

/* Arg parsing */

typedef enum 
{
  GDK_ARG_STRING,
  GDK_ARG_INT,
  GDK_ARG_BOOL,
  GDK_ARG_NOBOOL,
  GDK_ARG_CALLBACK
} GdkArgType;

typedef struct _GdkArgContext GdkArgContext;
typedef struct _GdkArgDesc GdkArgDesc;

typedef void (*GdkArgFunc) (const char *name, const char *arg, gpointer data);

struct _GdkArgContext
{
  GPtrArray *tables;
  gpointer cb_data;
};

struct _GdkArgDesc
{
  const char *name;
  GdkArgType type;
  gpointer location;
  GdkArgFunc callback;
};

/* Event handling */

142 143 144 145 146 147 148 149 150 151 152 153
typedef struct _GdkEventPrivate GdkEventPrivate;

typedef enum
{
  /* Following flag is set for events on the event queue during
   * translation and cleared afterwards.
   */
  GDK_EVENT_PENDING = 1 << 0
} GdkEventFlags;

struct _GdkEventPrivate
{
154 155 156
  GdkEvent   event;
  guint      flags;
  GdkScreen *screen;
157
  gpointer   windowing_data;
158
  GdkDevice *device;
159
  GdkDevice *source_device;
160 161
};

162 163 164 165 166 167 168 169 170 171 172
/* Tracks information about the pointer grab on this display */
typedef struct
{
  GdkWindow *window;
  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;
173
  GdkGrabOwnership ownership;
174

175 176 177
  guint activated : 1;
  guint implicit_ungrab : 1;
} GdkDeviceGrabInfo;
178

179
typedef struct _GdkWindowPaint GdkWindowPaint;
180

181 182 183 184 185
typedef void (* GdkDisplayPointerInfoForeach) (GdkDisplay           *display,
                                               GdkDevice            *device,
                                               GdkPointerWindowInfo *device_info,
                                               gpointer              user_data);

186
struct _GdkWindow
187
{
188
  GObject parent_instance;
189

190
  GdkWindowImpl *impl; /* window-system-specific delegate object */  
191
  
192
  GdkWindow *parent;
193
  GdkVisual *visual;
194 195 196 197 198 199 200 201 202 203 204

  gpointer user_data;

  gint x;
  gint y;
  
  gint extension_events;

  GList *filters;
  GList *children;

205
  cairo_pattern_t *background;
206 207 208
  
  GSList *paint_stack;
  
209
  cairo_region_t *update_area;
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
  guint update_freeze_count;
  
  guint8 window_type;
  guint8 depth;
  guint8 resize_count;

  GdkWindowState state;
  
  guint guffaw_gravity : 1;
  guint input_only : 1;
  guint modal_hint : 1;
  guint composited : 1;
  
  guint destroyed : 2;

  guint accept_focus : 1;
  guint focus_on_map : 1;
  guint shaped : 1;
228
  guint support_multidevice : 1;
229 230 231 232 233
  
  GdkEventMask event_mask;

  guint update_and_descendants_freeze_count;

234
  /* The GdkWindow that has the impl, ref:ed if another window.
235 236
   * This ref is required to keep the wrapper of the impl window alive
   * for as long as any GdkWindow references the impl. */
237
  GdkWindow *impl_window; 
238 239 240
  int abs_x, abs_y; /* Absolute offset in impl */
  gint width, height;
  guint32 clip_tag;
241 242
  cairo_region_t *clip_region; /* Clip region (wrt toplevel) in window coords */
  cairo_region_t *clip_region_with_children; /* Clip region in window coords */
243
  GdkCursor *cursor;
244
  GHashTable *device_cursor;
245
  gint8 toplevel_window_type;
246
  guint synthesize_crossing_event_queued : 1;
247 248 249
  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 */
250
  guint viewable : 1; /* mapped and all parents mapped */
Alexander Larsson's avatar
Alexander Larsson committed
251
  guint applied_shape : 1;
252

Alexander Larsson's avatar
Alexander Larsson committed
253
  guint num_offscreen_children;
254 255 256 257
  GdkWindowPaint *implicit_paint;

  GList *outstanding_moves;

258 259
  cairo_region_t *shape;
  cairo_region_t *input_shape;
260 261
  
  cairo_surface_t *cairo_surface;
262 263 264

  GList *devices_inside;
  GHashTable *device_events;
265 266 267 268

  GHashTable *source_event_masks;
  gulong device_added_handler_id;
  gulong device_changed_handler_id;
269 270
};

271 272
#define GDK_WINDOW_TYPE(d) (((GDK_WINDOW (d)))->window_type)
#define GDK_WINDOW_DESTROYED(d) (GDK_WINDOW (d)->destroyed)
273

274 275 276 277 278 279 280 281 282
struct _GdkDisplayClass
{
  GObjectClass parent_class;

  G_CONST_RETURN gchar *     (*get_name)           (GdkDisplay *display);
  gint			     (*get_n_screens)      (GdkDisplay *display);
  GdkScreen *		     (*get_screen)         (GdkDisplay *display,
						    gint        screen_num);
  GdkScreen *		     (*get_default_screen) (GdkDisplay *display);
283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306
  void                       (*beep)               (GdkDisplay *display);
  void                       (*sync)               (GdkDisplay *display);
  void                       (*flush)              (GdkDisplay *display);
  GdkWindow *                (*get_default_group)  (GdkDisplay *display);
  gboolean                   (*supports_selection_notification) (GdkDisplay *display);
  gboolean                   (*request_selection_notification)  (GdkDisplay *display,
								 GdkAtom     selection);
  gboolean                   (*supports_clipboard_persistence)  (GdkDisplay *display);
  void                       (*store_clipboard)    (GdkDisplay    *display,
						    GdkWindow     *clipboard_window,
						    guint32        time_,
						    const GdkAtom *targets,
						    gint           n_targets);
  gboolean                   (*supports_shapes)    (GdkDisplay *display);
  gboolean                   (*supports_input_shapes) (GdkDisplay *display);
  gboolean                   (*supports_composite) (GdkDisplay *display);
  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);
307 308 309 310 311 312 313


  /* Signals */
  void (*closed) (GdkDisplay *display,
		  gboolean    is_error);
};

314 315 316 317
struct _GdkKeymapClass
{
  GObjectClass parent_class;

318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347
  PangoDirection (* get_direction)      (GdkKeymap *keymap);
  gboolean (* have_bidi_layouts)        (GdkKeymap *keymap);
  gboolean (* get_caps_lock_state)      (GdkKeymap *keymap);
  gboolean (* get_num_lock_state)       (GdkKeymap *keymap);
  gboolean (* get_entries_for_keyval)   (GdkKeymap     *keymap,
					 guint          keyval,
					 GdkKeymapKey **keys,
					 gint          *n_keys);
  gboolean (* get_entries_for_keycode)  (GdkKeymap     *keymap,
					 guint          hardware_keycode,
					 GdkKeymapKey **keys,
					 guint        **keyvals,
					 gint          *n_entries);
  guint (* lookup_key)                  (GdkKeymap          *keymap,
					 const GdkKeymapKey *key);
  gboolean (* translate_keyboard_state) (GdkKeymap       *keymap,
					 guint            hardware_keycode,
					 GdkModifierType  state,
					 gint             group,
					 guint           *keyval,
					 gint            *effective_group,
					 gint            *level,
					 GdkModifierType *consumed_modifiers);
  void (* add_virtual_modifiers)        (GdkKeymap       *keymap,
					 GdkModifierType *state);
  gboolean (* map_virtual_modifiers)    (GdkKeymap       *keymap,
					 GdkModifierType *state);


  /* Signals */
348 349 350 351 352
  void (*direction_changed) (GdkKeymap *keymap);
  void (*keys_changed)      (GdkKeymap *keymap);
  void (*state_changed)     (GdkKeymap *keymap);
};

353 354 355 356 357 358 359 360 361
struct _GdkScreenClass
{
  GObjectClass parent_class;

  void (*size_changed) (GdkScreen *screen);
  void (*composited_changed) (GdkScreen *screen);
  void (*monitors_changed) (GdkScreen *screen);
};

362 363
extern GSList    *_gdk_displays;
extern gchar     *_gdk_display_name;
364 365
extern gint       _gdk_screen_number;
extern gchar     *_gdk_display_arg_name;
Carlos Garnacho's avatar
Carlos Garnacho committed
366
extern gboolean   _gdk_disable_multidevice;
367 368 369

void      _gdk_events_queue  (GdkDisplay *display);
GdkEvent* _gdk_event_unqueue (GdkDisplay *display);
370

371 372 373
void _gdk_event_filter_unref        (GdkWindow      *window,
				     GdkEventFilter *filter);

374
void   _gdk_event_emit               (GdkEvent   *event);
375 376 377 378 379 380 381 382 383 384 385 386 387 388 389
GList* _gdk_event_queue_find_first   (GdkDisplay *display);
void   _gdk_event_queue_remove_link  (GdkDisplay *display,
				      GList      *node);
GList* _gdk_event_queue_prepend      (GdkDisplay *display,
				      GdkEvent   *event);
GList* _gdk_event_queue_append       (GdkDisplay *display,
				      GdkEvent   *event);
GList* _gdk_event_queue_insert_after (GdkDisplay *display,
                                      GdkEvent   *after_event,
                                      GdkEvent   *event);
GList* _gdk_event_queue_insert_before(GdkDisplay *display,
                                      GdkEvent   *after_event,
                                      GdkEvent   *event);
void   _gdk_event_button_generate    (GdkDisplay *display,
				      GdkEvent   *event);
390

391 392 393
void _gdk_windowing_event_data_copy (const GdkEvent *src,
                                     GdkEvent       *dst);
void _gdk_windowing_event_data_free (GdkEvent       *event);
394

395 396 397
void gdk_synthesize_window_state (GdkWindow     *window,
                                  GdkWindowState unset_flags,
                                  GdkWindowState set_flags);
398

399 400
GdkDeviceManager * _gdk_device_manager_new (GdkDisplay *display);

401 402
gboolean _gdk_cairo_surface_extents (cairo_surface_t *surface,
                                     GdkRectangle *extents);
403

404 405 406 407
/*************************************
 * Interfaces used by windowing code *
 *************************************/

408 409 410
cairo_surface_t *
           _gdk_window_ref_cairo_surface (GdkWindow *window);

411
void       _gdk_window_impl_new          (GdkWindow      *window,
412
					  GdkWindow      *real_parent,
413 414 415 416 417 418 419 420
					  GdkScreen      *screen,
					  GdkEventMask    event_mask,
                                          GdkWindowAttr  *attributes,
                                          gint            attributes_mask);
void       _gdk_window_destroy           (GdkWindow      *window,
                                          gboolean        foreign_destroy);
void       _gdk_window_clear_update_area (GdkWindow      *window);
void       _gdk_window_update_size       (GdkWindow      *window);
421
gboolean   _gdk_window_update_viewable   (GdkWindow      *window);
422

423
void       _gdk_window_process_updates_recurse (GdkWindow *window,
424
                                                cairo_region_t *expose_region);
425

426
void       _gdk_screen_close             (GdkScreen      *screen);
427

428 429
const char *_gdk_get_sm_client_id (void);

430 431 432 433 434 435 436 437
/*****************************************
 * Interfaces provided by windowing code *
 *****************************************/

/* Font/string functions implemented in module-specific code */

void _gdk_cursor_destroy (GdkCursor *cursor);

438 439
void     _gdk_windowing_init                    (void);

440
extern const GOptionEntry _gdk_windowing_args[];
441
void     _gdk_windowing_set_default_display     (GdkDisplay *display);
442

443 444 445
gchar *_gdk_windowing_substitute_screen_number (const gchar *display_name,
					        gint         screen_number);

446
gulong   _gdk_windowing_window_get_next_serial  (GdkDisplay *display);
447
void     _gdk_windowing_window_get_offsets      (GdkWindow  *window,
448 449
						 gint       *x_offset,
						 gint       *y_offset);
Alexander Larsson's avatar
Alexander Larsson committed
450

451

452 453
void       _gdk_windowing_get_device_state   (GdkDisplay       *display,
                                              GdkDevice        *device,
454 455 456 457
					      GdkScreen       **screen,
					      gint             *x,
					      gint             *y,
					      GdkModifierType  *mask);
458 459 460 461 462 463 464 465
GdkWindow* _gdk_windowing_window_at_device_position  (GdkDisplay       *display,
                                                      GdkDevice        *device,
                                                      gint             *win_x,
                                                      gint             *win_y,
                                                      GdkModifierType  *mask,
                                                      gboolean          get_toplevel);
GdkGrabStatus _gdk_windowing_device_grab     (GdkDevice        *device,
                                              GdkWindow        *window,
466 467 468 469 470 471
					      GdkWindow        *native,
					      gboolean          owner_events,
					      GdkEventMask      event_mask,
					      GdkWindow        *confine_to,
					      GdkCursor        *cursor,
					      guint32           time);
472 473
void _gdk_windowing_got_event                (GdkDisplay       *display,
					      GList            *event_link,
474 475
					      GdkEvent         *event,
					      gulong            serial);
476

477
void _gdk_windowing_window_process_updates_recurse (GdkWindow *window,
478
                                                    cairo_region_t *expose_region);
479 480
void _gdk_windowing_before_process_all_updates     (void);
void _gdk_windowing_after_process_all_updates      (void);
481

482

483
#define GDK_WINDOW_IS_MAPPED(window) (((window)->state & GDK_WINDOW_STATE_WITHDRAWN) == 0)
Havoc Pennington's avatar
Havoc Pennington committed
484

485

486 487 488 489 490 491 492
/* Called when gdk_window_destroy() is called on a foreign window
 * or an ancestor of the foreign window. It should generally reparent
 * the window out of it's current heirarchy, hide it, and then
 * send a message to the owner requesting that the window be destroyed.
 */
void _gdk_windowing_window_destroy_foreign (GdkWindow *window);

493 494 495
void _gdk_windowing_display_set_sm_client_id (GdkDisplay  *display,
					      const gchar *sm_client_id);

496 497 498
void _gdk_windowing_window_set_composited (GdkWindow *window,
					   gboolean composited);

499 500 501 502 503 504 505 506 507 508 509 510
#define GDK_TYPE_PAINTABLE            (_gdk_paintable_get_type ())
#define GDK_PAINTABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_PAINTABLE, GdkPaintable))
#define GDK_IS_PAINTABLE(obj)	      (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_PAINTABLE))
#define GDK_PAINTABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GDK_TYPE_PAINTABLE, GdkPaintableIface))

typedef struct _GdkPaintable        GdkPaintable;
typedef struct _GdkPaintableIface   GdkPaintableIface;

struct _GdkPaintableIface
{
  GTypeInterface g_iface;
  
511
  void (* begin_paint_region)       (GdkPaintable    *paintable,
512
                                     GdkWindow       *window,
513
                                     const cairo_region_t *region);
514
  void (* end_paint)                (GdkPaintable    *paintable);
515 516 517 518
};

GType _gdk_paintable_get_type (void) G_GNUC_CONST;

519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534
struct GdkAppLaunchContextPrivate
{
  GdkDisplay *display;
  GdkScreen *screen;
  gint workspace;
  guint32 timestamp;
  GIcon *icon;
  char *icon_name;
};

char *_gdk_windowing_get_startup_notify_id (GAppLaunchContext *context,
					    GAppInfo          *info, 
					    GList             *files);
void  _gdk_windowing_launch_failed         (GAppLaunchContext *context, 
				            const char        *startup_notify_id);

535 536
void _gdk_display_device_grab_update                     (GdkDisplay *display,
                                                          GdkDevice  *device,
537
                                                          GdkDevice  *source_device,
538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570
                                                          gulong      current_serial);
GdkDeviceGrabInfo  *_gdk_display_get_last_device_grab  (GdkDisplay *display,
                                                        GdkDevice  *device);
GdkDeviceGrabInfo  *_gdk_display_add_device_grab   (GdkDisplay       *display,
                                                    GdkDevice        *device,
						    GdkWindow        *window,
						    GdkWindow        *native_window,
                                                    GdkGrabOwnership  grab_ownership,
						    gboolean          owner_events,
						    GdkEventMask      event_mask,
						    unsigned long     serial_start,
						    guint32           time,
						    gboolean          implicit);
GdkDeviceGrabInfo  * _gdk_display_has_device_grab  (GdkDisplay *display,
                                                    GdkDevice  *device,
						    gulong      serial);
gboolean _gdk_display_end_device_grab  (GdkDisplay *display,
                                        GdkDevice  *device,
					gulong      serial,
					GdkWindow  *if_child,
					gboolean    implicit);
gboolean _gdk_display_check_grab_ownership (GdkDisplay *display,
                                            GdkDevice  *device,
                                            gulong      serial);
void _gdk_display_enable_motion_hints     (GdkDisplay *display,
                                           GdkDevice  *device);

GdkPointerWindowInfo * _gdk_display_get_pointer_info (GdkDisplay *display,
                                                      GdkDevice  *device);

void _gdk_display_pointer_info_foreach (GdkDisplay                   *display,
                                        GdkDisplayPointerInfoForeach  func,
                                        gpointer                      user_data);
571 572

void _gdk_window_invalidate_for_expose (GdkWindow       *window,
573
					cairo_region_t       *region);
574

575 576
GdkWindow * _gdk_window_find_child_at (GdkWindow *window,
				       int x, int y);
577 578 579 580 581 582
GdkWindow * _gdk_window_find_descendant_at (GdkWindow *toplevel,
					    double x, double y,
					    double *found_x,
					    double *found_y);

void _gdk_window_add_damage (GdkWindow *toplevel,
583
			     cairo_region_t *damaged_region);
584 585 586 587 588

GdkEvent * _gdk_make_event (GdkWindow    *window,
			    GdkEventType  type,
			    GdkEvent     *event_in_queue,
			    gboolean      before_event);
589 590
gboolean _gdk_window_event_parent_of (GdkWindow *parent,
                                      GdkWindow *child);
591

Alexander Larsson's avatar
Alexander Larsson committed
592
void _gdk_synthesize_crossing_events (GdkDisplay                 *display,
593 594
				      GdkWindow                  *src,
				      GdkWindow                  *dest,
595
                                      GdkDevice                  *device,
596
                                      GdkDevice                  *source_device,
597 598 599 600 601 602 603 604
				      GdkCrossingMode             mode,
				      gint                        toplevel_x,
				      gint                        toplevel_y,
				      GdkModifierType             mask,
				      guint32                     time_,
				      GdkEvent                   *event_in_queue,
				      gulong                      serial,
				      gboolean                    non_linear);
Alexander Larsson's avatar
Alexander Larsson committed
605
void _gdk_display_set_window_under_pointer (GdkDisplay *display,
606 607
                                            GdkDevice  *device,
					    GdkWindow  *window);
Alexander Larsson's avatar
Alexander Larsson committed
608

609

Alexander Larsson's avatar
Alexander Larsson committed
610
void _gdk_synthesize_crossing_events_for_geometry_change (GdkWindow *changed_window);
611

612
cairo_region_t *_gdk_window_calculate_full_clip_region    (GdkWindow     *window,
613 614 615 616 617 618 619 620 621 622 623 624 625 626
                                                      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);

/*****************************
 * offscreen window routines *
 *****************************/
GType gdk_offscreen_window_get_type (void);
void       _gdk_offscreen_window_new                 (GdkWindow     *window,
						      GdkWindowAttr *attributes,
						      gint           attributes_mask);
627 628 629
cairo_surface_t * _gdk_offscreen_window_create_surface (GdkWindow *window,
                                                        gint       width,
                                                        gint       height);
630

631

632 633 634 635
/************************************
 * Initialization and exit routines *
 ************************************/

636
void _gdk_windowing_exit (void);
637

638
G_END_DECLS
639 640

#endif /* __GDK_INTERNALS_H__ */