1 /* GDK - The GIMP Drawing Kit
2 * Copyright (C) 1995-2007 Peter Mattis, Spencer Kimball,
3 * Josh MacDonald, Ryan Lortie
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 * Boston, MA 02111-1307, USA.
22 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
23 * file for a list of people on the GTK+ Team. See the ChangeLog
24 * files for a list of changes. These files are distributed with
25 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
30 #include "gdkwindow-broadway.h"
31 #include "gdkscreen-broadway.h"
33 #include "gdkwindow.h"
34 #include "gdkwindowimpl.h"
35 #include "gdkdisplay-broadway.h"
36 #include "gdkprivate-broadway.h"
37 #include "gdkinternals.h"
38 #include "gdkdeviceprivate.h"
39 #include "gdkeventsource.h"
44 #include <netinet/in.h>
47 /* Forward declarations */
48 static void gdk_window_broadway_set_background (GdkWindow *window,
49 cairo_pattern_t *pattern);
51 static void gdk_window_impl_broadway_finalize (GObject *object);
52 static void gdk_window_impl_iface_init (GdkWindowImplIface *iface);
54 #define WINDOW_IS_TOPLEVEL_OR_FOREIGN(window) \
55 (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD && \
56 GDK_WINDOW_TYPE (window) != GDK_WINDOW_OFFSCREEN)
58 #define WINDOW_IS_TOPLEVEL(window) \
59 (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD && \
60 GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN && \
61 GDK_WINDOW_TYPE (window) != GDK_WINDOW_OFFSCREEN)
63 /* Return whether time1 is considered later than time2 as far as xserver
64 * time is concerned. Accounts for wraparound.
66 #define XSERVER_TIME_IS_LATER(time1, time2) \
67 ( (( time1 > time2 ) && ( time1 - time2 < ((guint32)-1)/2 )) || \
68 (( time1 < time2 ) && ( time2 - time1 > ((guint32)-1)/2 )) \
71 G_DEFINE_TYPE_WITH_CODE (GdkWindowImplBroadway,
72 gdk_window_impl_broadway,
73 GDK_TYPE_DRAWABLE_IMPL_BROADWAY,
74 G_IMPLEMENT_INTERFACE (GDK_TYPE_WINDOW_IMPL,
75 gdk_window_impl_iface_init));
77 static GList *all_windows;
80 _gdk_window_impl_get_type (void)
82 return gdk_window_impl_broadway_get_type ();
86 gdk_window_impl_broadway_init (GdkWindowImplBroadway *impl)
88 static int current_id = 1; /* 0 is the root window */
90 impl->id = current_id++;
91 all_windows = g_list_prepend (all_windows, impl);
92 impl->toplevel_window_type = -1;
93 impl->device_cursor = g_hash_table_new_full (NULL, NULL, NULL,
94 (GDestroyNotify) gdk_cursor_unref);
98 gdk_window_impl_broadway_class_init (GdkWindowImplBroadwayClass *klass)
100 GObjectClass *object_class = G_OBJECT_CLASS (klass);
102 object_class->finalize = gdk_window_impl_broadway_finalize;
106 gdk_window_impl_broadway_finalize (GObject *object)
108 GdkWindowObject *wrapper;
109 GdkDrawableImplBroadway *draw_impl;
110 GdkWindowImplBroadway *window_impl;
112 g_return_if_fail (GDK_IS_WINDOW_IMPL_BROADWAY (object));
114 draw_impl = GDK_DRAWABLE_IMPL_BROADWAY (object);
115 window_impl = GDK_WINDOW_IMPL_BROADWAY (object);
117 wrapper = (GdkWindowObject*) draw_impl->wrapper;
119 if (window_impl->cursor)
120 gdk_cursor_unref (window_impl->cursor);
122 g_hash_table_destroy (window_impl->device_cursor);
124 all_windows = g_list_remove (all_windows, window_impl);
126 G_OBJECT_CLASS (gdk_window_impl_broadway_parent_class)->finalize (object);
130 _gdk_windowing_window_init (GdkScreen * screen)
132 GdkWindowObject *private;
133 GdkDrawableImplBroadway *draw_impl;
134 GdkScreenBroadway *screen_broadway;
136 screen_broadway = GDK_SCREEN_BROADWAY (screen);
138 g_assert (screen_broadway->root_window == NULL);
140 screen_broadway->root_window = g_object_new (GDK_TYPE_WINDOW, NULL);
142 private = (GdkWindowObject *) screen_broadway->root_window;
143 private->impl = g_object_new (_gdk_window_impl_get_type (), NULL);
144 private->impl_window = private;
145 private->visual = gdk_screen_get_system_visual (screen);
147 draw_impl = GDK_DRAWABLE_IMPL_BROADWAY (private->impl);
149 draw_impl->screen = screen;
150 draw_impl->wrapper = GDK_DRAWABLE (private);
152 private->window_type = GDK_WINDOW_ROOT;
159 private->width = gdk_screen_get_width (screen);
160 private->height = gdk_screen_get_height (screen);
161 private->viewable = TRUE;
163 _gdk_window_update_size (screen_broadway->root_window);
167 _gdk_window_impl_new (GdkWindow *window,
168 GdkWindow *real_parent,
170 GdkEventMask event_mask,
171 GdkWindowAttr *attributes,
172 gint attributes_mask)
174 GdkWindowObject *private;
175 GdkWindowImplBroadway *impl;
176 GdkDrawableImplBroadway *draw_impl;
177 GdkScreenBroadway *screen_broadway;
178 GdkDisplayBroadway *display_broadway;
180 private = (GdkWindowObject *) window;
182 screen_broadway = GDK_SCREEN_BROADWAY (screen);
183 display_broadway = GDK_DISPLAY_BROADWAY (GDK_SCREEN_DISPLAY (screen));
185 impl = g_object_new (_gdk_window_impl_get_type (), NULL);
186 private->impl = (GdkDrawable *)impl;
187 draw_impl = GDK_DRAWABLE_IMPL_BROADWAY (impl);
188 draw_impl->wrapper = GDK_DRAWABLE (window);
190 draw_impl->screen = screen;
192 g_assert (private->window_type == GDK_WINDOW_TOPLEVEL ||
193 private->window_type == GDK_WINDOW_TEMP);
194 g_assert (GDK_WINDOW_TYPE (private->parent) == GDK_WINDOW_ROOT);
199 gdk_window_foreign_new_for_display (GdkDisplay *display,
200 GdkNativeWindow anid)
206 gdk_window_lookup_for_display (GdkDisplay *display, GdkNativeWindow anid)
212 gdk_window_lookup (GdkNativeWindow anid)
218 _gdk_broadway_window_destroy (GdkWindow *window,
220 gboolean foreign_destroy)
222 GdkWindowObject *private = (GdkWindowObject *)window;
224 g_return_if_fail (GDK_IS_WINDOW (window));
226 _gdk_selection_window_destroyed (window);
228 _gdk_broadway_drawable_finish (private->impl);
231 static cairo_surface_t *
232 gdk_window_broadway_resize_cairo_surface (GdkWindow *window,
233 cairo_surface_t *surface,
237 /* Image surfaces cannot be resized */
238 cairo_surface_destroy (surface);
244 _gdk_windowing_window_destroy_foreign (GdkWindow *window)
248 /* This function is called when the XWindow is really gone.
251 gdk_window_destroy_notify (GdkWindow *window)
253 GdkWindowImplBroadway *window_impl;
255 window_impl = GDK_WINDOW_IMPL_BROADWAY (((GdkWindowObject *)window)->impl);
257 if (!GDK_WINDOW_DESTROYED (window))
259 if (GDK_WINDOW_TYPE(window) != GDK_WINDOW_FOREIGN)
260 g_warning ("GdkWindow %p unexpectedly destroyed", window);
262 _gdk_window_destroy (window, TRUE);
265 g_object_unref (window);
269 gdk_window_broadway_show (GdkWindow *window, gboolean already_mapped)
271 GdkWindowObject *private;
273 private = (GdkWindowObject*) window;
275 if (private->event_mask & GDK_STRUCTURE_MASK)
276 _gdk_make_event (GDK_WINDOW (private), GDK_MAP, NULL, FALSE);
278 if (private->parent && private->parent->event_mask & GDK_SUBSTRUCTURE_MASK)
279 _gdk_make_event (GDK_WINDOW (private), GDK_MAP, NULL, FALSE);
285 gdk_window_broadway_hide (GdkWindow *window)
287 GdkWindowObject *private;
289 private = (GdkWindowObject*) window;
291 if (private->event_mask & GDK_STRUCTURE_MASK)
292 _gdk_make_event (GDK_WINDOW (private), GDK_UNMAP, NULL, FALSE);
294 if (private->parent && private->parent->event_mask & GDK_SUBSTRUCTURE_MASK)
295 _gdk_make_event (GDK_WINDOW (private), GDK_UNMAP, NULL, FALSE);
297 _gdk_window_clear_update_area (window);
301 gdk_window_broadway_withdraw (GdkWindow *window)
303 gdk_window_broadway_hide (window);
307 window_broadway_move (GdkWindow *window,
311 GdkWindowObject *private = (GdkWindowObject *) window;
313 // XMoveWindow (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window), x, y);
319 window_broadway_resize (GdkWindow *window,
323 GdkWindowObject *private = (GdkWindowObject *) window;
331 //XResizeWindow (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window), width, height);
333 private->width = width;
334 private->height = height;
335 _gdk_broadway_drawable_update_size (private->impl);
337 _gdk_broadway_drawable_update_size (private->impl);
341 window_broadway_move_resize (GdkWindow *window,
347 GdkWindowObject *private = (GdkWindowObject *) window;;
355 //XMoveResizeWindow (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window), x, y, width, height);
360 private->width = width;
361 private->height = height;
363 _gdk_broadway_drawable_update_size (private->impl);
367 gdk_window_broadway_move_resize (GdkWindow *window,
374 if (with_move && (width < 0 && height < 0))
375 window_broadway_move (window, x, y);
379 window_broadway_move_resize (window, x, y, width, height);
381 window_broadway_resize (window, width, height);
386 gdk_window_broadway_reparent (GdkWindow *window,
387 GdkWindow *new_parent,
395 gdk_window_broadway_raise (GdkWindow *window)
400 gdk_window_broadway_restack_under (GdkWindow *window,
401 GList *native_siblings /* in requested order, first is bottom-most */)
406 gdk_window_broadway_restack_toplevel (GdkWindow *window,
413 gdk_window_broadway_lower (GdkWindow *window)
419 gdk_window_focus (GdkWindow *window,
425 gdk_window_set_type_hint (GdkWindow *window,
426 GdkWindowTypeHint hint)
431 gdk_window_get_type_hint (GdkWindow *window)
433 return GDK_WINDOW_TYPE_HINT_NORMAL;
437 gdk_window_set_modal_hint (GdkWindow *window,
443 gdk_window_set_skip_taskbar_hint (GdkWindow *window,
444 gboolean skips_taskbar)
449 gdk_window_set_skip_pager_hint (GdkWindow *window,
450 gboolean skips_pager)
455 gdk_window_set_urgency_hint (GdkWindow *window,
461 gdk_window_set_geometry_hints (GdkWindow *window,
462 const GdkGeometry *geometry,
463 GdkWindowHints geom_mask)
468 gdk_window_set_title (GdkWindow *window,
474 gdk_window_set_role (GdkWindow *window,
480 gdk_window_set_startup_id (GdkWindow *window,
481 const gchar *startup_id)
486 gdk_window_set_transient_for (GdkWindow *window,
492 gdk_window_broadway_set_background (GdkWindow *window,
493 cairo_pattern_t *pattern)
499 gdk_window_broadway_set_device_cursor (GdkWindow *window,
503 GdkWindowObject *private;
504 GdkWindowImplBroadway *impl;
506 g_return_if_fail (GDK_IS_WINDOW (window));
507 g_return_if_fail (GDK_IS_DEVICE (device));
509 private = (GdkWindowObject *) window;
510 impl = GDK_WINDOW_IMPL_BROADWAY (private->impl);
513 g_hash_table_remove (impl->device_cursor, device);
516 _gdk_broadway_cursor_update_theme (cursor);
517 g_hash_table_replace (impl->device_cursor,
518 device, gdk_cursor_ref (cursor));
521 if (!GDK_WINDOW_DESTROYED (window))
522 GDK_DEVICE_GET_CLASS (device)->set_window_cursor (device, window, cursor);
526 _gdk_broadway_window_get_cursor (GdkWindow *window)
528 GdkWindowObject *private;
529 GdkWindowImplBroadway *impl;
531 g_return_val_if_fail (GDK_IS_WINDOW (window), NULL);
533 private = (GdkWindowObject *)window;
534 impl = GDK_WINDOW_IMPL_BROADWAY (private->impl);
540 gdk_window_broadway_get_geometry (GdkWindow *window,
550 gdk_window_broadway_get_root_coords (GdkWindow *window,
565 gdk_window_get_root_origin (GdkWindow *window,
577 gdk_window_get_frame_extents (GdkWindow *window,
580 GdkWindowObject *private;
582 g_return_if_fail (rect != NULL);
584 private = (GdkWindowObject*) window;
586 rect->x = private->x;
587 rect->y = private->y;
588 rect->width = private->width;
589 rect->height = private->height;
593 _gdk_windowing_get_device_state (GdkDisplay *display,
598 GdkModifierType *mask)
606 gdk_window_broadway_get_device_state (GdkWindow *window,
610 GdkModifierType *mask)
616 gdk_display_warp_pointer (GdkDisplay *display,
623 g_return_if_fail (GDK_IS_DISPLAY (display));
624 g_return_if_fail (GDK_IS_SCREEN (screen));
626 device = display->core_pointer;
627 GDK_DEVICE_GET_CLASS (device)->warp (device, screen, x, y);
631 gdk_display_warp_device (GdkDisplay *display,
637 g_return_if_fail (GDK_IS_DISPLAY (display));
638 g_return_if_fail (GDK_IS_DEVICE (device));
639 g_return_if_fail (GDK_IS_SCREEN (screen));
640 g_return_if_fail (display == gdk_device_get_display (device));
642 GDK_DEVICE_GET_CLASS (device)->warp (device, screen, x, y);
646 _gdk_windowing_window_at_device_position (GdkDisplay *display,
650 GdkModifierType *mask,
651 gboolean get_toplevel)
657 gdk_window_broadway_get_events (GdkWindow *window)
659 if (GDK_WINDOW_DESTROYED (window))
665 gdk_window_broadway_set_events (GdkWindow *window,
666 GdkEventMask event_mask)
668 if (!GDK_WINDOW_DESTROYED (window))
674 gdk_window_broadway_shape_combine_region (GdkWindow *window,
675 const cairo_region_t *shape_region,
682 gdk_window_broadway_input_shape_combine_region (GdkWindow *window,
683 const cairo_region_t *shape_region,
691 gdk_window_set_override_redirect (GdkWindow *window,
692 gboolean override_redirect)
697 gdk_window_set_accept_focus (GdkWindow *window,
698 gboolean accept_focus)
700 GdkWindowObject *private;
702 private = (GdkWindowObject *)window;
704 accept_focus = accept_focus != FALSE;
706 if (private->accept_focus != accept_focus)
708 private->accept_focus = accept_focus;
713 gdk_window_set_focus_on_map (GdkWindow *window,
714 gboolean focus_on_map)
716 GdkWindowObject *private;
718 private = (GdkWindowObject *)window;
720 focus_on_map = focus_on_map != FALSE;
722 if (private->focus_on_map != focus_on_map)
724 private->focus_on_map = focus_on_map;
730 gdk_window_set_icon_list (GdkWindow *window,
736 gdk_window_set_icon_name (GdkWindow *window,
741 if (GDK_WINDOW_DESTROYED (window) ||
742 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
745 display = gdk_window_get_display (window);
747 g_object_set_qdata (G_OBJECT (window), g_quark_from_static_string ("gdk-icon-name-set"),
748 GUINT_TO_POINTER (name != NULL));
752 gdk_window_iconify (GdkWindow *window)
754 if (GDK_WINDOW_DESTROYED (window) ||
755 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
760 gdk_window_deiconify (GdkWindow *window)
762 if (GDK_WINDOW_DESTROYED (window) ||
763 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
768 gdk_window_stick (GdkWindow *window)
770 if (GDK_WINDOW_DESTROYED (window) ||
771 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
777 gdk_window_unstick (GdkWindow *window)
779 if (GDK_WINDOW_DESTROYED (window) ||
780 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
786 gdk_window_maximize (GdkWindow *window)
788 if (GDK_WINDOW_DESTROYED (window) ||
789 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
795 gdk_window_unmaximize (GdkWindow *window)
797 if (GDK_WINDOW_DESTROYED (window) ||
798 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
804 gdk_window_fullscreen (GdkWindow *window)
806 if (GDK_WINDOW_DESTROYED (window) ||
807 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
813 gdk_window_unfullscreen (GdkWindow *window)
815 if (GDK_WINDOW_DESTROYED (window) ||
816 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
822 gdk_window_set_keep_above (GdkWindow *window,
825 g_return_if_fail (GDK_IS_WINDOW (window));
827 if (GDK_WINDOW_DESTROYED (window) ||
828 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
834 gdk_window_set_keep_below (GdkWindow *window, gboolean setting)
836 g_return_if_fail (GDK_IS_WINDOW (window));
838 if (GDK_WINDOW_DESTROYED (window) ||
839 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
845 gdk_window_get_group (GdkWindow *window)
847 if (GDK_WINDOW_DESTROYED (window) ||
848 !WINDOW_IS_TOPLEVEL (window))
855 gdk_window_set_group (GdkWindow *window,
861 gdk_window_set_decorations (GdkWindow *window,
862 GdkWMDecoration decorations)
864 if (GDK_WINDOW_DESTROYED (window) ||
865 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
871 gdk_window_get_decorations(GdkWindow *window,
872 GdkWMDecoration *decorations)
874 gboolean result = FALSE;
876 if (GDK_WINDOW_DESTROYED (window) ||
877 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
884 gdk_window_set_functions (GdkWindow *window,
885 GdkWMFunction functions)
887 g_return_if_fail (GDK_IS_WINDOW (window));
889 if (GDK_WINDOW_DESTROYED (window) ||
890 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
895 _gdk_windowing_window_get_shape (GdkWindow *window)
901 _gdk_windowing_window_get_input_shape (GdkWindow *window)
908 gdk_window_broadway_set_static_gravities (GdkWindow *window,
915 gdk_window_begin_resize_drag (GdkWindow *window,
922 if (GDK_WINDOW_DESTROYED (window) ||
923 !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
929 gdk_window_begin_move_drag (GdkWindow *window,
935 if (GDK_WINDOW_DESTROYED (window) ||
936 !WINDOW_IS_TOPLEVEL (window))
942 gdk_window_enable_synchronized_configure (GdkWindow *window)
944 GdkWindowObject *private = (GdkWindowObject *)window;
946 if (!GDK_IS_WINDOW_IMPL_BROADWAY (private->impl))
951 gdk_window_configure_finished (GdkWindow *window)
953 if (!WINDOW_IS_TOPLEVEL (window))
958 _gdk_windowing_window_beep (GdkWindow *window)
962 g_return_if_fail (GDK_IS_WINDOW (window));
964 display = GDK_WINDOW_DISPLAY (window);
966 gdk_display_beep (display);
970 gdk_window_set_opacity (GdkWindow *window,
975 g_return_if_fail (GDK_IS_WINDOW (window));
977 if (GDK_WINDOW_DESTROYED (window) ||
978 !WINDOW_IS_TOPLEVEL (window))
981 display = gdk_window_get_display (window);
985 else if (opacity > 1)
991 _gdk_windowing_window_set_composited (GdkWindow *window,
997 _gdk_windowing_window_process_updates_recurse (GdkWindow *window,
998 cairo_region_t *region)
1000 GdkWindowObject *private;
1001 GdkWindowImplBroadway *impl;
1003 _gdk_window_process_updates_recurse (window, region);
1005 private = (GdkWindowObject *)window;
1006 impl = GDK_WINDOW_IMPL_BROADWAY (private->impl);
1011 _gdk_windowing_before_process_all_updates (void)
1016 _gdk_windowing_after_process_all_updates (void)
1020 for (l = all_windows; l != NULL; l = l->next)
1022 GdkWindowImplBroadway *impl = l->data;
1026 /* TODO: Flush dirty windows */
1027 impl->dirty = FALSE;
1033 _gdk_broadway_window_queue_antiexpose (GdkWindow *window,
1034 cairo_region_t *area)
1040 _gdk_broadway_window_translate (GdkWindow *window,
1041 cairo_region_t *area,
1045 GdkWindowObject *private;
1046 GdkWindowImplBroadway *impl;
1047 cairo_surface_t *surface;
1049 private = (GdkWindowObject *)window;
1050 impl = GDK_WINDOW_IMPL_BROADWAY (private->impl);
1052 surface = GDK_DRAWABLE_IMPL_BROADWAY (impl)->surface;
1057 cr = cairo_create (surface);
1059 area = cairo_region_copy (area);
1061 gdk_cairo_region (cr, area);
1064 /* NB: This is a self-copy and Cairo doesn't support that yet.
1065 * So we do a litle trick.
1067 cairo_push_group (cr);
1069 cairo_set_source_surface (cr, surface, dx, dy);
1072 cairo_pop_group_to_source (cr);
1080 gdk_window_impl_iface_init (GdkWindowImplIface *iface)
1082 iface->show = gdk_window_broadway_show;
1083 iface->hide = gdk_window_broadway_hide;
1084 iface->withdraw = gdk_window_broadway_withdraw;
1085 iface->set_events = gdk_window_broadway_set_events;
1086 iface->get_events = gdk_window_broadway_get_events;
1087 iface->raise = gdk_window_broadway_raise;
1088 iface->lower = gdk_window_broadway_lower;
1089 iface->restack_under = gdk_window_broadway_restack_under;
1090 iface->restack_toplevel = gdk_window_broadway_restack_toplevel;
1091 iface->move_resize = gdk_window_broadway_move_resize;
1092 iface->set_background = gdk_window_broadway_set_background;
1093 iface->reparent = gdk_window_broadway_reparent;
1094 iface->set_device_cursor = gdk_window_broadway_set_device_cursor;
1095 iface->get_geometry = gdk_window_broadway_get_geometry;
1096 iface->get_root_coords = gdk_window_broadway_get_root_coords;
1097 iface->get_device_state = gdk_window_broadway_get_device_state;
1098 iface->shape_combine_region = gdk_window_broadway_shape_combine_region;
1099 iface->input_shape_combine_region = gdk_window_broadway_input_shape_combine_region;
1100 iface->set_static_gravities = gdk_window_broadway_set_static_gravities;
1101 iface->queue_antiexpose = _gdk_broadway_window_queue_antiexpose;
1102 iface->translate = _gdk_broadway_window_translate;
1103 iface->destroy = _gdk_broadway_window_destroy;
1104 iface->resize_cairo_surface = gdk_window_broadway_resize_cairo_surface;