From: Chun-wei Fan Date: Fri, 3 Nov 2017 08:37:18 +0000 (+0800) Subject: gdk/win32: Fix build after GdkScreen and cursor cleanups X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~23^2~892 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6a12a3cd10c9985d2dbbf176e6899b54880e14dd;p=gtk4.git gdk/win32: Fix build after GdkScreen and cursor cleanups Move the leftovers from the removals to use the current APIs, to fix the build. Also for gdk_device_virtual_set_window_cursor(), only do something when a valid GdkCursor is passed in here. https://bugzilla.gnome.org/show_bug.cgi?id=773299 --- diff --git a/gdk/win32/gdkdevice-virtual.c b/gdk/win32/gdkdevice-virtual.c index 6b8079b045..57ee4b59af 100644 --- a/gdk/win32/gdkdevice-virtual.c +++ b/gdk/win32/gdkdevice-virtual.c @@ -92,33 +92,8 @@ gdk_device_virtual_set_window_cursor (GdkDevice *device, GdkWindow *window, GdkCursor *cursor) { - GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl); - GdkCursor *previous_cursor = impl->cursor; - if (cursor != NULL && GDK_WIN32_CURSOR (cursor)->hcursor != NULL) - { - SetCursor (GDK_WIN32_CURSOR (cursor)->hcursor); - } - else if (previous_cursor != NULL && - GetCursor () == GDK_WIN32_CURSOR (previous_cursor)->hcursor) - { - /* The caller will unref previous_cursor shortly, - * but it holds the handle to currently-used cursor, - * and we can't call SetCursor(NULL). - */ - g_warning (G_STRLOC ": Refusing to replace cursor %p (handle %p) with NULL. " - "Expect ugly results.", - previous_cursor, GDK_WIN32_CURSOR (previous_cursor)->hcursor); - } - else - { - /* Up the stack all effors were made already to ensure that - * the "cursor" argument is non-NULL. - * If it is, calling SetCursor(NULL) is absolutely not - * the right decision, so we just warn and bail out. - */ - g_warning (G_STRLOC ": Refusing to set NULL cursor"); - } + SetCursor (GDK_WIN32_CURSOR (cursor)->hcursor); } static void @@ -171,8 +146,6 @@ gdk_device_virtual_grab (GdkDevice *device, if (_gdk_win32_grab_cursor != NULL) SetCursor (GDK_WIN32_CURSOR (_gdk_win32_grab_cursor)->hcursor); - else if (impl->cursor != NULL) - SetCursor (GDK_WIN32_CURSOR (impl->cursor)->hcursor); else SetCursor (LoadCursor (NULL, IDC_ARROW)); diff --git a/gdk/win32/gdkdevice-win32.c b/gdk/win32/gdkdevice-win32.c index 711a0b704c..0033fff558 100644 --- a/gdk/win32/gdkdevice-win32.c +++ b/gdk/win32/gdkdevice-win32.c @@ -111,7 +111,7 @@ gdk_device_win32_query_state (GdkDevice *device, GdkWindowImplWin32 *impl; if (window == NULL) - window = gdk_get_default_root_window (); + window = gdk_display_get_root_window (gdk_display_get_default ()); impl = GDK_WINDOW_IMPL_WIN32 (window->impl); hwnd = GDK_WINDOW_HWND (window); @@ -131,7 +131,7 @@ gdk_device_win32_query_state (GdkDevice *device, if (win_y) *win_y = point.y / impl->window_scale; - if (window == gdk_get_default_root_window ()) + if (window == gdk_display_get_root_window (gdk_display_get_default ())) { if (win_x) *win_x += _gdk_offset_x; @@ -247,7 +247,7 @@ _gdk_device_win32_window_at_position (GdkDevice *device, /* If we didn't hit any window at that point, return the desktop */ if (hwnd == NULL) { - window = gdk_get_default_root_window (); + window = gdk_display_get_root_window (gdk_display_get_default ()); impl = GDK_WINDOW_IMPL_WIN32 (window->impl); if (win_x) diff --git a/gdk/win32/gdkdevice-wintab.c b/gdk/win32/gdkdevice-wintab.c index 26991a7dda..a9ffd947d6 100644 --- a/gdk/win32/gdkdevice-wintab.c +++ b/gdk/win32/gdkdevice-wintab.c @@ -24,6 +24,7 @@ #include "gdkwin32.h" #include "gdkdevice-wintab.h" +#include "gdkdisplayprivate.h" G_DEFINE_TYPE (GdkDeviceWintab, gdk_device_wintab, GDK_TYPE_DEVICE) @@ -122,7 +123,7 @@ gdk_device_wintab_query_state (GdkDevice *device, device_wintab = GDK_DEVICE_WINTAB (device); if (window == NULL) - window = gdk_get_default_root_window (); + window = gdk_display_get_root_window (gdk_display_get_default ()); impl = GDK_WINDOW_IMPL_WIN32 (window->impl); hwnd = GDK_WINDOW_HWND (window); @@ -142,7 +143,7 @@ gdk_device_wintab_query_state (GdkDevice *device, if (win_y) *win_y = point.y / impl->window_scale; - if (window == gdk_get_default_root_window ()) + if (window == gdk_display_get_root_window (gdk_display_get_default ())) { if (win_x) *win_x += _gdk_offset_x; diff --git a/gdk/win32/gdkdevicemanager-win32.c b/gdk/win32/gdkdevicemanager-win32.c index cdd4be76a3..704c5c40ec 100644 --- a/gdk/win32/gdkdevicemanager-win32.c +++ b/gdk/win32/gdkdevicemanager-win32.c @@ -961,7 +961,7 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS; G_GNUC_END_IGNORE_DEPRECATIONS; window = gdk_device_get_window_at_position (device_manager->core_pointer, &x, &y); if (window == NULL) - window = gdk_get_default_root_window (); + window = gdk_display_get_root_window (gdk_display_get_default ()); g_object_ref (window); @@ -1004,7 +1004,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS; window = g_object_ref (last_grab->window); } - if (window == gdk_get_default_root_window ()) + if (window == gdk_display_get_root_window (gdk_display_get_default ())) { GDK_NOTE (EVENTS_OR_INPUT, g_print ("... is root\n")); return FALSE; @@ -1081,7 +1081,8 @@ G_GNUC_END_IGNORE_DEPRECATIONS; { GDK_NOTE (EVENTS_OR_INPUT, g_print ("... not selected\n")); - if (window->parent == gdk_get_default_root_window () || window->parent == NULL) + if (window->parent == gdk_display_get_root_window (gdk_display_get_default ()) || + window->parent == NULL) return FALSE; impl = GDK_WINDOW_IMPL_WIN32 (window->impl); diff --git a/gdk/win32/gdkdisplay-win32.c b/gdk/win32/gdkdisplay-win32.c index 5cd08e02a9..9f13f18a14 100644 --- a/gdk/win32/gdkdisplay-win32.c +++ b/gdk/win32/gdkdisplay-win32.c @@ -619,7 +619,7 @@ inner_clipboard_window_procedure (HWND hwnd, GDK_NOTE (DND, g_print (" \n")); event = gdk_event_new (GDK_OWNER_CHANGE); - event->owner_change.window = gdk_get_default_root_window (); + event->owner_change.window = gdk_display_get_root_window (gdk_display_get_default ()); event->owner_change.reason = GDK_OWNER_CHANGE_NEW_OWNER; event->owner_change.selection = GDK_SELECTION_CLIPBOARD; event->owner_change.time = _gdk_win32_get_next_tick (0); diff --git a/gdk/win32/gdkdnd-win32.c b/gdk/win32/gdkdnd-win32.c index eded6aa40d..8771eb0963 100644 --- a/gdk/win32/gdkdnd-win32.c +++ b/gdk/win32/gdkdnd-win32.c @@ -81,6 +81,7 @@ #include "gdkwin32.h" #include "gdkwin32dnd.h" #include "gdk/gdkdndprivate.h" +#include "gdkdisplayprivate.h" #include @@ -731,7 +732,7 @@ idropsource_givefeedback (LPDROPSOURCE This, else { if (ctx->context->dest_window == NULL) - ctx->context->dest_window = g_object_ref (gdk_get_default_root_window ()); + ctx->context->dest_window = g_object_ref (gdk_display_get_root_window (gdk_display_get_default ())); } return DRAGDROP_S_USEDEFAULTCURSORS; @@ -1430,7 +1431,7 @@ gdk_dropfiles_filter (GdkXEvent *xev, context->protocol = GDK_DRAG_PROTO_WIN32_DROPFILES; context->is_source = FALSE; - context->source_window = gdk_get_default_root_window (); + context->source_window = gdk_display_get_root_window (gdk_display_get_default ()); g_object_ref (context->source_window); context->dest_window = event->any.window; diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index aee97c470f..591f533c6d 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -673,7 +673,6 @@ _gdk_win32_print_event (const GdkEvent *event) CASE (GDK_DROP_START); CASE (GDK_DROP_FINISHED); CASE (GDK_CLIENT_EVENT); - CASE (GDK_VISIBILITY_NOTIFY); CASE (GDK_SCROLL); CASE (GDK_WINDOW_STATE); CASE (GDK_OWNER_CHANGE); @@ -1356,7 +1355,8 @@ propagate (GdkWindow **window, { /* Owner doesn't want it, propagate to parent. */ GdkWindow *parent = gdk_window_get_parent (*window); - if (parent == gdk_get_default_root_window () || parent == NULL) + if (parent == gdk_display_get_root_window (gdk_display_get_default ()) || + parent == NULL) { /* No parent; check if grabbed */ if (grab_window != NULL) @@ -1434,7 +1434,7 @@ _gdk_win32_get_window_rect (GdkWindow *window, point.y = client_rect.top; /* top level windows need screen coords */ - if (gdk_window_get_parent (window) == gdk_get_default_root_window ()) + if (gdk_window_get_parent (window) == gdk_display_get_root_window (gdk_display_get_default ())) { ClientToScreen (hwnd, &point); point.x += _gdk_offset_x * window_impl->window_scale; @@ -1692,7 +1692,6 @@ handle_dpi_changed (GdkWindow *window, GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl); GdkDisplay *display = gdk_display_get_default (); GdkWin32Display *win32_display = GDK_WIN32_DISPLAY (display); - GdkScreen *screen = gdk_window_get_screen (window); GdkDevice *device = gdk_seat_get_pointer (gdk_display_get_default_seat (display)); RECT *rect = (RECT *)msg->lParam; GdkEvent *event; @@ -1711,9 +1710,6 @@ handle_dpi_changed (GdkWindow *window, if (old_scale == impl->window_scale) return; - _gdk_screen_set_resolution (screen, - impl->window_scale >= 2 ? USER_DEFAULT_SCREEN_DPI : dpi); - if (!IsIconic (msg->hwnd) && !GDK_WINDOW_DESTROYED (window)) { @@ -3070,8 +3066,6 @@ gdk_event_translate (MSG *msg, if (grab_window != NULL && _gdk_win32_grab_cursor != NULL) cursor = _gdk_win32_grab_cursor; - else if (!GDK_WINDOW_DESTROYED (window) && GDK_WINDOW_IMPL_WIN32 (window->impl)->cursor != NULL) - cursor = GDK_WINDOW_IMPL_WIN32 (window->impl)->cursor; else cursor = NULL; diff --git a/gdk/win32/gdkprivate-win32.h b/gdk/win32/gdkprivate-win32.h index 7401bdb604..57b814254f 100644 --- a/gdk/win32/gdkprivate-win32.h +++ b/gdk/win32/gdkprivate-win32.h @@ -466,7 +466,6 @@ GdkKeymap *_gdk_win32_display_get_keymap (GdkDisplay *display); void _gdk_win32_display_create_window_impl (GdkDisplay *display, GdkWindow *window, GdkWindow *real_parent, - GdkScreen *screen, GdkEventMask event_mask, GdkWindowAttr *attributes); @@ -530,8 +529,6 @@ gboolean _gdk_win32_window_lacks_wm_decorations (GdkWindow *window); BOOL WINAPI GtkShowWindow (GdkWindow *window, int cmd_show); -void _gdk_win32_screen_set_font_resolution (GdkWin32Screen *win32_screen); - /* Initialization */ void _gdk_win32_windowing_init (void); void _gdk_dnd_init (void); diff --git a/gdk/win32/gdkproperty-win32.c b/gdk/win32/gdkproperty-win32.c index ebd53d526f..b1910b70d3 100644 --- a/gdk/win32/gdkproperty-win32.c +++ b/gdk/win32/gdkproperty-win32.c @@ -31,6 +31,7 @@ #include "gdkscreen.h" #include "gdkproperty.h" #include "gdkselection.h" +#include "gdkdisplayprivate.h" #include "gdkprivate-win32.h" #include "gdkwin32.h" diff --git a/gdk/win32/gdkscreen-win32.c b/gdk/win32/gdkscreen-win32.c index 25320d10df..0ce999ce72 100644 --- a/gdk/win32/gdkscreen-win32.c +++ b/gdk/win32/gdkscreen-win32.c @@ -127,7 +127,6 @@ static void gdk_win32_screen_init (GdkWin32Screen *win32_screen) { GdkScreen *screen = GDK_SCREEN (win32_screen); - _gdk_win32_screen_set_font_resolution (win32_screen); _gdk_win32_display_init_monitors (GDK_WIN32_DISPLAY (_gdk_display)); init_root_window (win32_screen); @@ -141,37 +140,6 @@ _gdk_win32_screen_on_displaychange_event (GdkWin32Screen *screen) init_root_window_size (screen); } -void -_gdk_win32_screen_set_font_resolution (GdkWin32Screen *win32_screen) -{ - GdkScreen *screen = GDK_SCREEN (win32_screen); - int logpixelsx = -1; - const gchar *font_resolution; - - font_resolution = g_getenv ("GDK_WIN32_FONT_RESOLUTION"); - if (font_resolution) - { - int env_logpixelsx = atol (font_resolution); - if (env_logpixelsx > 0) - logpixelsx = env_logpixelsx; - } - else - { - gint dpi = -1; - GdkWin32Display *win32_display = GDK_WIN32_DISPLAY (screen->display); - guint scale = _gdk_win32_display_get_monitor_scale_factor (win32_display, NULL, NULL, &dpi); - - /* If we have a scale that is at least 2, don't scale up the fonts */ - if (scale >= 2) - logpixelsx = USER_DEFAULT_SCREEN_DPI; - else - logpixelsx = dpi; - } - - if (logpixelsx > 0) - _gdk_screen_set_resolution (screen, logpixelsx); -} - GdkWindow * gdk_win32_screen_get_root_window (GdkScreen *screen) { diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c index 0350a6cc92..97f86fa810 100644 --- a/gdk/win32/gdkwindow-win32.c +++ b/gdk/win32/gdkwindow-win32.c @@ -36,7 +36,6 @@ #include "gdkenumtypes.h" #include "gdkwin32.h" #include "gdkdisplayprivate.h" -#include "gdkvisualprivate.h" #include "gdkmonitorprivate.h" #include "gdkwin32window.h" #include "gdkglcontext-win32.h" @@ -449,7 +448,6 @@ gboolean _gdk_win32_window_enable_transparency (GdkWindow *window) { GdkWindowImplWin32 *impl; - GdkScreen *screen; DWM_BLURBEHIND blur_behind; HRGN empty_region; HRESULT call_result; @@ -464,8 +462,6 @@ _gdk_win32_window_enable_transparency (GdkWindow *window) if (impl->layered) return TRUE; - screen = gdk_window_get_screen (window); - if (!gdk_display_is_composited (gdk_window_get_display (window))) return FALSE; @@ -748,7 +744,7 @@ _gdk_win32_display_create_window_impl (GdkDisplay *display, case GDK_WINDOW_TEMP: /* A temp window is not necessarily a top level window */ - dwStyle = (gdk_screen_get_root_window (screen) == real_parent ? WS_POPUP : WS_CHILDWINDOW); + dwStyle = (gdk_display_get_root_window (display) == real_parent ? WS_POPUP : WS_CHILDWINDOW); dwStyle |= WS_CLIPCHILDREN | WS_CLIPSIBLINGS; dwExStyle |= WS_EX_TOOLWINDOW | WS_EX_TOPMOST; offset_x = _gdk_offset_x; @@ -897,7 +893,7 @@ gdk_win32_window_foreign_new_for_display (GdkDisplay *display, parent = GetParent (anid); /* Always treat foreigns as toplevels */ - window->parent = gdk_get_default_root_window (); + window->parent = gdk_display_get_root_window (gdk_display_get_default ()); window->parent->children = g_list_concat (&window->children_list_node, window->parent->children); @@ -1999,18 +1995,18 @@ gdk_win32_window_get_geometry (GdkWindow *window, gint *width, gint *height) { - GdkScreen *screen; + GdkDisplay *display; gboolean window_is_root; - screen = gdk_window_get_screen (window); + display = gdk_window_get_display (window); if (!window) { - window = gdk_screen_get_root_window (screen); + window = gdk_display_get_root_window (display); window_is_root = TRUE; } else - window_is_root = (gdk_screen_get_root_window (screen) == window); + window_is_root = (gdk_display_get_root_window (display) == window); if (!GDK_WINDOW_DESTROYED (window)) { @@ -2038,7 +2034,7 @@ gdk_win32_window_get_geometry (GdkWindow *window, rect.right = pt.x; rect.bottom = pt.y; - if (gdk_screen_get_root_window (screen) == parent) + if (gdk_display_get_root_window (display) == parent) { rect.left += _gdk_offset_x * impl->window_scale; rect.top += _gdk_offset_y * impl->window_scale; @@ -5830,7 +5826,6 @@ gdk_window_impl_win32_class_init (GdkWindowImplWin32Class *klass) impl_class->lower = gdk_win32_window_lower; impl_class->restack_toplevel = gdk_win32_window_restack_toplevel; impl_class->move_resize = gdk_win32_window_move_resize; - impl_class->set_device_cursor = gdk_win32_window_set_device_cursor; impl_class->get_geometry = gdk_win32_window_get_geometry; impl_class->get_device_state = gdk_window_win32_get_device_state; impl_class->get_root_coords = gdk_win32_window_get_root_coords;