From e625b41a1d7535f5fb92f49ca780bebc6a414393 Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Wed, 2 Jul 2008 06:06:29 +0000 Subject: [PATCH] =?utf8?q?Bug=20541162=20=E2=80=93=20[Win32]=20Update=20fo?= =?utf8?q?r=20the=20new=20GdkWindowImpl=20stuff?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2008-07-02 Cody Russell Bug 541162 – [Win32] Update for the new GdkWindowImpl stuff * gdk/win32/gdkprivate-win32.h: * gdk/win32/gdkgeometry-win32.c: * gdk/win32/gdkevents-win32.c: * gdk/win32/gdkwindow-win32.c: Update Win32 backend according to the newly refactored GdkWindow code. svn path=/trunk/; revision=20729 --- ChangeLog | 10 + gdk/win32/gdkevents-win32.c | 10 +- gdk/win32/gdkgeometry-win32.c | 30 +-- gdk/win32/gdkprivate-win32.h | 14 ++ gdk/win32/gdkwindow-win32.c | 381 ++++++++++++---------------------- 5 files changed, 173 insertions(+), 272 deletions(-) diff --git a/ChangeLog b/ChangeLog index 985851c1d..2f84d4856 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2008-07-02 Cody Russell + + Bug 541162 – [Win32] Update for the new GdkWindowImpl stuff + + * gdk/win32/gdkprivate-win32.h: + * gdk/win32/gdkgeometry-win32.c: + * gdk/win32/gdkevents-win32.c: + * gdk/win32/gdkwindow-win32.c: Update Win32 backend according to + the newly refactored GdkWindow code. + 2008-07-01 Cody Russell Bug 539164 – Windows' System Menu blocks main loop diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index b2b4ada3b..6633f5920 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -1366,7 +1366,7 @@ synthesize_enter_or_leave_event (GdkWindow *window, event->crossing.window = window; event->crossing.subwindow = NULL; event->crossing.time = _gdk_win32_get_next_tick (msg->time); - _gdk_windowing_window_get_offsets (window, &xoffset, &yoffset); + _gdk_win32_windowing_window_get_offsets (window, &xoffset, &yoffset); event->crossing.x = x + xoffset; event->crossing.y = y + yoffset; event->crossing.x_root = msg->pt.x + _gdk_offset_x; @@ -2012,7 +2012,7 @@ handle_wm_paint (MSG *msg, update_region = _gdk_win32_hrgn_to_region (hrgn); - _gdk_windowing_window_get_offsets (window, &xoffset, &yoffset); + _gdk_win32_windowing_window_get_offsets (window, &xoffset, &yoffset); gdk_region_offset (update_region, xoffset, yoffset); _gdk_window_process_expose (window, update_region); @@ -2063,7 +2063,7 @@ generate_button_event (GdkEventType type, translate_mouse_coords (orig_window, window, msg); event->button.x = current_x = (gint16) GET_X_LPARAM (msg->lParam); event->button.y = current_y = (gint16) GET_Y_LPARAM (msg->lParam); - _gdk_windowing_window_get_offsets (window, &xoffset, &yoffset); + _gdk_win32_windowing_window_get_offsets (window, &xoffset, &yoffset); event->button.x += xoffset; event->button.y += yoffset; event->button.x_root = msg->pt.x + _gdk_offset_x; @@ -2633,7 +2633,7 @@ gdk_event_translate (MSG *msg, event->motion.time = _gdk_win32_get_next_tick (msg->time); event->motion.x = current_x = (gint16) GET_X_LPARAM (msg->lParam); event->motion.y = current_y = (gint16) GET_Y_LPARAM (msg->lParam); - _gdk_windowing_window_get_offsets (window, &xoffset, &yoffset); + _gdk_win32_windowing_window_get_offsets (window, &xoffset, &yoffset); event->motion.x += xoffset; event->motion.y += yoffset; event->motion.x_root = current_root_x; @@ -2724,7 +2724,7 @@ gdk_event_translate (MSG *msg, event->scroll.direction = (((short) HIWORD (msg->wParam)) > 0) ? GDK_SCROLL_UP : GDK_SCROLL_DOWN; event->scroll.time = _gdk_win32_get_next_tick (msg->time); - _gdk_windowing_window_get_offsets (window, &xoffset, &yoffset); + _gdk_win32_windowing_window_get_offsets (window, &xoffset, &yoffset); event->scroll.x = (gint16) point.x + xoffset; event->scroll.y = (gint16) point.y + yoffset; event->scroll.x_root = (gint16) GET_X_LPARAM (msg->lParam) + _gdk_offset_x; diff --git a/gdk/win32/gdkgeometry-win32.c b/gdk/win32/gdkgeometry-win32.c index 2297fc413..c7a5a3780 100644 --- a/gdk/win32/gdkgeometry-win32.c +++ b/gdk/win32/gdkgeometry-win32.c @@ -75,9 +75,9 @@ static void gdk_window_post_scroll (GdkWindow *window, GdkRegion *new_clip_region); void -_gdk_windowing_window_get_offsets (GdkWindow *window, - gint *x_offset, - gint *y_offset) +_gdk_win32_windowing_window_get_offsets (GdkWindow *window, + gint *x_offset, + gint *y_offset) { GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); @@ -101,9 +101,9 @@ _gdk_window_init_position (GdkWindow *window) } void -gdk_window_scroll (GdkWindow *window, - gint dx, - gint dy) +_gdk_win32_window_scroll (GdkWindow *window, + gint dx, + gint dy) { GdkRegion *invalidate_region; GdkWindowImplWin32 *impl; @@ -112,11 +112,6 @@ gdk_window_scroll (GdkWindow *window, GdkWindowParentPos parent_pos; HRGN native_invalidate_region; - g_return_if_fail (GDK_IS_WINDOW (window)); - - if (GDK_WINDOW_DESTROYED (window)) - return; - GDK_NOTE (EVENTS, g_print ("gdk_window_scroll: %p %d,%d\n", GDK_WINDOW_HWND (window), dx, dy)); @@ -172,10 +167,10 @@ gdk_window_scroll (GdkWindow *window, } void -gdk_window_move_region (GdkWindow *window, - const GdkRegion *region, - gint dx, - gint dy) +_gdk_win32_window_move_region (GdkWindow *window, + const GdkRegion *region, + gint dx, + gint dy) { GdkRegion *invalidate_region; GdkWindowImplWin32 *impl; @@ -184,11 +179,6 @@ gdk_window_move_region (GdkWindow *window, HRGN hrgn; RECT clipRect, destRect; - g_return_if_fail (GDK_IS_WINDOW (window)); - - if (GDK_WINDOW_DESTROYED (window)) - return; - obj = GDK_WINDOW_OBJECT (window); impl = GDK_WINDOW_IMPL_WIN32 (obj->impl); diff --git a/gdk/win32/gdkprivate-win32.h b/gdk/win32/gdkprivate-win32.h index 7864026aa..4196b4d57 100644 --- a/gdk/win32/gdkprivate-win32.h +++ b/gdk/win32/gdkprivate-win32.h @@ -209,6 +209,20 @@ void _gdk_window_move_resize_child (GdkWindow *window, gint y, gint width, gint height); + +/* GdkWindowImpl methods */ +void _gdk_win32_window_scroll (GdkWindow *window, + gint dx, + gint dy); +void _gdk_win32_window_move_region (GdkWindow *window, + const GdkRegion *region, + gint dx, + gint dy); +void _gdk_win32_windowing_window_get_offsets (GdkWindow *window, + gint *x_offset, + gint *y_offset); + + void _gdk_window_process_expose (GdkWindow *window, GdkRegion *invalidate_region); diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c index 1a1661745..2f87189c7 100644 --- a/gdk/win32/gdkwindow-win32.c +++ b/gdk/win32/gdkwindow-win32.c @@ -31,6 +31,7 @@ #include #include "gdk.h" +#include "gdkwindowimpl.h" #include "gdkprivate-win32.h" #include "gdkinput-win32.h" @@ -61,6 +62,8 @@ static gboolean _gdk_window_get_functions (GdkWindow *window, (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD && \ GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) +static void gdk_window_impl_iface_init (GdkWindowImplIface *iface); + GType _gdk_window_impl_win32_get_type (void) { @@ -80,10 +83,20 @@ _gdk_window_impl_win32_get_type (void) 0, /* n_preallocs */ (GInstanceInitFunc) gdk_window_impl_win32_init, }; + + const GInterfaceInfo window_impl_info = + { + (GInterfaceInitFunc) gdk_window_impl_iface_init, + NULL, + NULL + }; object_type = g_type_register_static (GDK_TYPE_DRAWABLE_IMPL_WIN32, "GdkWindowImplWin32", &object_info, 0); + g_type_add_interface_static (object_type, + GDK_TYPE_WINDOW_IMPL, + &window_impl_info); } return object_type; @@ -282,6 +295,7 @@ _gdk_windowing_window_init (void) _gdk_root = g_object_new (GDK_TYPE_WINDOW, NULL); private = (GdkWindowObject *)_gdk_root; + private->impl = g_object_new (_gdk_window_impl_get_type (), NULL); draw_impl = GDK_DRAWABLE_IMPL_WIN32 (private->impl); draw_impl->handle = GetDesktopWindow (); @@ -522,6 +536,7 @@ gdk_window_new_internal (GdkWindow *parent, window = g_object_new (GDK_TYPE_WINDOW, NULL); private = (GdkWindowObject *)window; + private->impl = g_object_new (_gdk_window_impl_get_type (), NULL); impl = GDK_WINDOW_IMPL_WIN32 (private->impl); draw_impl = GDK_DRAWABLE_IMPL_WIN32 (private->impl); draw_impl->wrapper = GDK_DRAWABLE (window); @@ -1124,28 +1139,16 @@ show_window_internal (GdkWindow *window, } void -gdk_window_show_unraised (GdkWindow *window) +gdk_win32_window_show (GdkWindow *window, gboolean raise) { - g_return_if_fail (GDK_IS_WINDOW (window)); - - show_window_internal (window, FALSE, FALSE); + show_window_internal (window, raise, FALSE); } void -gdk_window_show (GdkWindow *window) -{ - g_return_if_fail (GDK_IS_WINDOW (window)); - - show_window_internal (window, TRUE, FALSE); -} - -void -gdk_window_hide (GdkWindow *window) +gdk_win32_window_hide (GdkWindow *window) { GdkWindowObject *private; - g_return_if_fail (GDK_IS_WINDOW (window)); - private = (GdkWindowObject*) window; if (private->destroyed) return; @@ -1177,12 +1180,10 @@ gdk_window_hide (GdkWindow *window) } void -gdk_window_withdraw (GdkWindow *window) +gdk_win32_window_withdraw (GdkWindow *window) { GdkWindowObject *private; - g_return_if_fail (GDK_IS_WINDOW (window)); - private = (GdkWindowObject*) window; if (private->destroyed) return; @@ -1195,119 +1196,16 @@ gdk_window_withdraw (GdkWindow *window) } void -gdk_window_move (GdkWindow *window, - gint x, - gint y) -{ - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplWin32 *impl; - - g_return_if_fail (GDK_IS_WINDOW (window)); - - if (GDK_WINDOW_DESTROYED (window)) - return; - - GDK_NOTE (MISC, g_print ("gdk_window_move: %p: %+d%+d\n", - GDK_WINDOW_HWND (window), x, y)); - - impl = GDK_WINDOW_IMPL_WIN32 (private->impl); - - if (private->state & GDK_WINDOW_STATE_FULLSCREEN) - return; - - /* Don't check GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD. - * Foreign windows (another app's windows) might be children of our - * windows! Especially in the case of gtkplug/socket. - */ - if (GetAncestor (GDK_WINDOW_HWND (window), GA_PARENT) != GetDesktopWindow ()) - { - _gdk_window_move_resize_child (window, x, y, impl->width, impl->height); - } - else - { - RECT outer_rect; - - get_outer_rect (window, impl->width, impl->height, &outer_rect); - - adjust_for_gravity_hints (impl, &outer_rect, &x, &y); - - GDK_NOTE (MISC, g_print ("... SetWindowPos(%p,NULL,%d,%d,0,0," - "NOACTIVATE|NOSIZE|NOZORDER)\n", - GDK_WINDOW_HWND (window), - x - _gdk_offset_x, y - _gdk_offset_y)); - - API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), NULL, - x - _gdk_offset_x, y - _gdk_offset_y, 0, 0, - SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER)); - } -} - -void -gdk_window_resize (GdkWindow *window, - gint width, - gint height) -{ - GdkWindowObject *private = (GdkWindowObject*) window; - GdkWindowImplWin32 *impl; - - g_return_if_fail (GDK_IS_WINDOW (window)); - - if (GDK_WINDOW_DESTROYED (window)) - return; - - if (width < 1) - width = 1; - if (height < 1) - height = 1; - - GDK_NOTE (MISC, g_print ("gdk_window_resize: %p: %dx%d\n", - GDK_WINDOW_HWND (window), width, height)); - - impl = GDK_WINDOW_IMPL_WIN32 (private->impl); - - if (private->state & GDK_WINDOW_STATE_FULLSCREEN) - return; - - if (GetAncestor (GDK_WINDOW_HWND (window), GA_PARENT) != GetDesktopWindow ()) - { - _gdk_window_move_resize_child (window, private->x, private->y, width, height); - } - else - { - RECT outer_rect; - - get_outer_rect (window, width, height, &outer_rect); - - GDK_NOTE (MISC, g_print ("... SetWindowPos(%p,NULL,0,0,%ld,%ld," - "NOACTIVATE|NOMOVE|NOZORDER)\n", - GDK_WINDOW_HWND (window), - outer_rect.right - outer_rect.left, - outer_rect.bottom - outer_rect.top)); - - API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), NULL, - 0, 0, - outer_rect.right - outer_rect.left, - outer_rect.bottom - outer_rect.top, - SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER)); - private->resize_count += 1; - } -} - -void -gdk_window_move_resize (GdkWindow *window, - gint x, - gint y, - gint width, - gint height) +gdk_win32_window_move_resize (GdkWindow *window, + gboolean with_move, + gint x, + gint y, + gint width, + gint height) { GdkWindowObject *private = (GdkWindowObject*) window; GdkWindowImplWin32 *impl; - g_return_if_fail (GDK_IS_WINDOW (window)); - - if (GDK_WINDOW_DESTROYED (window)) - return; - if (width < 1) width = 1; if (height < 1) @@ -1340,20 +1238,26 @@ gdk_window_move_resize (GdkWindow *window, x - _gdk_offset_x, y - _gdk_offset_y, outer_rect.right - outer_rect.left, outer_rect.bottom - outer_rect.top)); - + + UINT uflags = SWP_NOACTIVATE | SWP_NOZORDER; + if (with_move == FALSE) + uflags |= SWP_NOMOVE; + if (width == -1 || height == -1) + uflags |= SWP_NOSIZE; + API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), NULL, x - _gdk_offset_x, y - _gdk_offset_y, outer_rect.right - outer_rect.left, outer_rect.bottom - outer_rect.top, - SWP_NOACTIVATE | SWP_NOZORDER)); + uflags)); } } -void -_gdk_window_reparent (GdkWindow *window, - GdkWindow *new_parent, - gint x, - gint y) +static gboolean +gdk_win32_window_reparent (GdkWindow *window, + GdkWindow *new_parent, + gint x, + gint y) { GdkWindowObject *window_private; GdkWindowObject *parent_private; @@ -1439,6 +1343,8 @@ _gdk_window_reparent (GdkWindow *window, parent_private->children = g_list_prepend (parent_private->children, window); _gdk_window_init_position (GDK_WINDOW (window_private)); + + return TRUE; } static void @@ -1575,78 +1481,60 @@ erase_background (GdkWindow *window, } void -_gdk_windowing_window_clear_area (GdkWindow *window, - gint x, - gint y, - gint width, - gint height) +_gdk_win32_window_clear_area (GdkWindow *window, + gint x, + gint y, + gint width, + gint height, + gboolean send_expose) { GdkWindowImplWin32 *impl; - g_return_if_fail (GDK_IS_WINDOW (window)); - impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); - if (!GDK_WINDOW_DESTROYED (window)) - { - HDC hdc; - - if (width == 0) - width = impl->width - x; - if (height == 0) - height = impl->height - y; - GDK_NOTE (MISC, g_print ("_gdk_windowing_window_clear_area: %p: " - "%dx%d@%+d%+d\n", - GDK_WINDOW_HWND (window), - width, height, x, y)); - hdc = GetDC (GDK_WINDOW_HWND (window)); - IntersectClipRect (hdc, x, y, x + width, y + height); - erase_background (window, hdc); - GDI_CALL (ReleaseDC, (GDK_WINDOW_HWND (window), hdc)); - } -} - -void -_gdk_windowing_window_clear_area_e (GdkWindow *window, - gint x, - gint y, - gint width, - gint height) -{ - g_return_if_fail (GDK_IS_WINDOW (window)); - if (!GDK_WINDOW_DESTROYED (window)) { HDC hdc; RECT rect; - GDK_NOTE (MISC, g_print ("_gdk_windowing_window_clear_area_e: %p: " - "%dx%d@%+d%+d\n", - GDK_WINDOW_HWND (window), - width, height, x, y)); - - /* The background should be erased before the expose event is - generated */ hdc = GetDC (GDK_WINDOW_HWND (window)); - IntersectClipRect (hdc, x, y, x + width, y + height); - erase_background (window, hdc); - GDI_CALL (ReleaseDC, (GDK_WINDOW_HWND (window), hdc)); - - rect.left = x; - rect.right = x + width; - rect.top = y; - rect.bottom = y + height; - GDI_CALL (InvalidateRect, (GDK_WINDOW_HWND (window), &rect, TRUE)); - UpdateWindow (GDK_WINDOW_HWND (window)); + if (!send_expose) + { + if (width == 0) + width = impl->width - x; + if (height == 0) + height = impl->height - y; + GDK_NOTE (MISC, g_print ("_gdk_windowing_window_clear_area: %p: " + "%dx%d@%+d%+d\n", + GDK_WINDOW_HWND (window), + width, height, x, y)); + IntersectClipRect (hdc, x, y, x + width, y + height); + erase_background (window, hdc); + GDI_CALL (ReleaseDC, (GDK_WINDOW_HWND (window), hdc)); + } + else + { + /* The background should be erased before the expose event is + generated */ + IntersectClipRect (hdc, x, y, x + width, y + height); + erase_background (window, hdc); + GDI_CALL (ReleaseDC, (GDK_WINDOW_HWND (window), hdc)); + + rect.left = x; + rect.right = x + width; + rect.top = y; + rect.bottom = y + height; + + GDI_CALL (InvalidateRect, (GDK_WINDOW_HWND (window), &rect, TRUE)); + UpdateWindow (GDK_WINDOW_HWND (window)); + } } } void -gdk_window_raise (GdkWindow *window) +gdk_win32_window_raise (GdkWindow *window) { - g_return_if_fail (GDK_IS_WINDOW (window)); - if (!GDK_WINDOW_DESTROYED (window)) { GDK_NOTE (MISC, g_print ("gdk_window_raise: %p\n", @@ -1666,10 +1554,8 @@ gdk_window_raise (GdkWindow *window) } void -gdk_window_lower (GdkWindow *window) +gdk_win32_window_lower (GdkWindow *window) { - g_return_if_fail (GDK_IS_WINDOW (window)); - if (!GDK_WINDOW_DESTROYED (window)) { GDK_NOTE (MISC, g_print ("gdk_window_lower: %p\n" @@ -2074,13 +1960,11 @@ _gdk_modal_current () } void -gdk_window_set_background (GdkWindow *window, - const GdkColor *color) +gdk_win32_window_set_background (GdkWindow *window, + const GdkColor *color) { GdkWindowObject *private = (GdkWindowObject *)window; - g_return_if_fail (GDK_IS_WINDOW (window)); - GDK_NOTE (MISC, g_print ("gdk_window_set_background: %p: %s\n", GDK_WINDOW_HWND (window), _gdk_win32_color_to_string (color))); @@ -2097,16 +1981,12 @@ gdk_window_set_background (GdkWindow *window, } void -gdk_window_set_back_pixmap (GdkWindow *window, - GdkPixmap *pixmap, - gint parent_relative) +gdk_win32_window_set_back_pixmap (GdkWindow *window, + GdkPixmap *pixmap, + gint parent_relative) { GdkWindowObject *private = (GdkWindowObject *)window; - g_return_if_fail (GDK_IS_WINDOW (window)); - g_return_if_fail (pixmap == NULL || !parent_relative); - g_return_if_fail (pixmap == NULL || gdk_drawable_get_depth (window) == gdk_drawable_get_depth (pixmap)); - if (pixmap && !gdk_drawable_get_colormap (pixmap)) { g_warning ("gdk_window_set_back_pixmap(): pixmap must have a colormap"); @@ -2138,8 +2018,8 @@ gdk_window_set_back_pixmap (GdkWindow *window, } void -gdk_window_set_cursor (GdkWindow *window, - GdkCursor *cursor) +gdk_win32_window_set_cursor (GdkWindow *window, + GdkCursor *cursor) { GdkWindowImplWin32 *impl; GdkCursorPrivate *cursor_private; @@ -2147,8 +2027,6 @@ gdk_window_set_cursor (GdkWindow *window, HCURSOR hcursor; HCURSOR hprevcursor; - g_return_if_fail (GDK_IS_WINDOW (window)); - impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); cursor_private = (GdkCursorPrivate*) cursor; @@ -2246,15 +2124,13 @@ gdk_window_set_cursor (GdkWindow *window, } void -gdk_window_get_geometry (GdkWindow *window, - gint *x, - gint *y, - gint *width, - gint *height, - gint *depth) +gdk_win32_window_get_geometry (GdkWindow *window, + gint *x, + gint *y, + gint *width, + gint *height, + gint *depth) { - g_return_if_fail (window == NULL || GDK_IS_WINDOW (window)); - if (!window) window = _gdk_root; @@ -2312,16 +2188,14 @@ gdk_window_get_geometry (GdkWindow *window, } gint -gdk_window_get_origin (GdkWindow *window, - gint *x, - gint *y) +gdk_win32_window_get_origin (GdkWindow *window, + gint *x, + gint *y) { gint return_val; gint tx = 0; gint ty = 0; - g_return_val_if_fail (GDK_IS_WINDOW (window), 0); - if (!GDK_WINDOW_DESTROYED (window)) { POINT pt; @@ -2561,10 +2435,8 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display, } GdkEventMask -gdk_window_get_events (GdkWindow *window) +gdk_win32_window_get_events (GdkWindow *window) { - g_return_val_if_fail (GDK_IS_WINDOW (window), 0); - if (GDK_WINDOW_DESTROYED (window)) return 0; @@ -2572,14 +2444,9 @@ gdk_window_get_events (GdkWindow *window) } void -gdk_window_set_events (GdkWindow *window, +gdk_win32_window_set_events (GdkWindow *window, GdkEventMask event_mask) { - g_return_if_fail (GDK_IS_WINDOW (window)); - - if (GDK_WINDOW_DESTROYED (window)) - return; - /* gdk_window_new() always sets the GDK_STRUCTURE_MASK, so better * set it here, too. Not that I know or remember why it is * necessary, will have to test some day. @@ -2612,14 +2479,12 @@ do_shape_combine_region (GdkWindow *window, } void -gdk_window_shape_combine_mask (GdkWindow *window, - GdkBitmap *mask, - gint x, gint y) +gdk_win32_window_shape_combine_mask (GdkWindow *window, + GdkBitmap *mask, + gint x, gint y) { GdkWindowObject *private = (GdkWindowObject *)window; - g_return_if_fail (GDK_IS_WINDOW (window)); - if (!mask) { GDK_NOTE (MISC, g_print ("gdk_window_shape_combine_mask: %p: none\n", @@ -3135,10 +3000,8 @@ gdk_propagate_shapes (HANDLE win, } void -gdk_window_set_child_shapes (GdkWindow *window) +gdk_win32_window_set_child_shapes (GdkWindow *window) { - g_return_if_fail (GDK_IS_WINDOW (window)); - if (GDK_WINDOW_DESTROYED (window)) return; @@ -3146,10 +3009,8 @@ gdk_window_set_child_shapes (GdkWindow *window) } void -gdk_window_merge_child_shapes (GdkWindow *window) +gdk_win32_window_merge_child_shapes (GdkWindow *window) { - g_return_if_fail (GDK_IS_WINDOW (window)); - if (GDK_WINDOW_DESTROYED (window)) return; @@ -3177,7 +3038,7 @@ gdk_window_merge_child_input_shapes (GdkWindow *window) } gboolean -gdk_window_set_static_gravities (GdkWindow *window, +gdk_win32_window_set_static_gravities (GdkWindow *window, gboolean use_static) { g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE); @@ -3666,15 +3527,13 @@ gdk_window_get_type_hint (GdkWindow *window) } void -gdk_window_shape_combine_region (GdkWindow *window, - const GdkRegion *shape_region, - gint offset_x, - gint offset_y) +gdk_win32_window_shape_combine_region (GdkWindow *window, + const GdkRegion *shape_region, + gint offset_x, + gint offset_y) { GdkWindowObject *private = (GdkWindowObject *)window; - g_return_if_fail (GDK_IS_WINDOW (window)); - if (GDK_WINDOW_DESTROYED (window)) return; @@ -3784,3 +3643,31 @@ void _gdk_windowing_window_set_composited (GdkWindow *window, gboolean composited) { } + +static void +gdk_window_impl_iface_init (GdkWindowImplIface *iface) +{ + iface->show = gdk_win32_window_show; + iface->hide = gdk_win32_window_hide; + iface->withdraw = gdk_win32_window_withdraw; + iface->set_events = gdk_win32_window_set_events; + iface->get_events = gdk_win32_window_get_events; + iface->clear_area = _gdk_win32_window_clear_area; + iface->raise = gdk_win32_window_raise; + iface->lower = gdk_win32_window_lower; + iface->move_resize = gdk_win32_window_move_resize; + iface->scroll = _gdk_win32_window_scroll; + iface->move_region = _gdk_win32_window_move_region; + iface->set_background = gdk_win32_window_set_background; + iface->set_back_pixmap = gdk_win32_window_set_back_pixmap; + iface->reparent = gdk_win32_window_reparent; + iface->set_cursor = gdk_win32_window_set_cursor; + iface->get_geometry = gdk_win32_window_get_geometry; + iface->get_origin = gdk_win32_window_get_origin; + iface->shape_combine_mask = gdk_win32_window_shape_combine_mask; + iface->shape_combine_region = gdk_win32_window_shape_combine_region; + iface->set_child_shapes = gdk_win32_window_set_child_shapes; + iface->merge_child_shapes = gdk_win32_window_merge_child_shapes; + iface->set_static_gravities = gdk_win32_window_set_static_gravities; + iface->get_offsets = _gdk_win32_windowing_window_get_offsets; +} -- 2.43.2