diff options
author | Benjamin Otte <otte@redhat.com> | 2020-05-17 05:58:20 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2020-05-17 07:32:37 +0200 |
commit | 4c7914dc493d14da8692a52aa86846a6588f0189 (patch) | |
tree | 06130136d19e364b5131377e1fec76099b187eb7 | |
parent | 9a30019268b3ae98a200ffc45213f6db63e2ab07 (diff) | |
download | gtk+-4c7914dc493d14da8692a52aa86846a6588f0189.tar.gz |
display: Remove unneeded getters
Applications can use the listmodel instead.
-rw-r--r-- | docs/reference/gdk/gdk4-sections.txt | 2 | ||||
-rw-r--r-- | gdk/broadway/gdkdisplay-broadway.c | 20 | ||||
-rw-r--r-- | gdk/broadway/gdksurface-broadway.c | 4 | ||||
-rw-r--r-- | gdk/gdkdisplay.c | 51 | ||||
-rw-r--r-- | gdk/gdkdisplay.h | 5 | ||||
-rw-r--r-- | gdk/gdkdisplayprivate.h | 3 | ||||
-rw-r--r-- | gdk/gdkmonitor.c | 7 | ||||
-rw-r--r-- | gdk/gdksurface.c | 9 | ||||
-rw-r--r-- | gdk/wayland/gdkdisplay-wayland.c | 27 | ||||
-rw-r--r-- | gdk/wayland/gdksurface-wayland.c | 12 | ||||
-rw-r--r-- | gdk/win32/gdkdisplay-win32.c | 36 | ||||
-rw-r--r-- | gdk/win32/gdkscreen-win32.c | 13 | ||||
-rw-r--r-- | gdk/win32/gdksurface-win32.c | 66 | ||||
-rw-r--r-- | gdk/x11/gdkdisplay-x11.c | 30 | ||||
-rw-r--r-- | gdk/x11/gdksurface-x11.c | 10 | ||||
-rw-r--r-- | gtk/gtkwidget.c | 8 | ||||
-rw-r--r-- | gtk/gtkwindow.c | 21 | ||||
-rw-r--r-- | tests/animated-resizing.c | 7 |
18 files changed, 106 insertions, 225 deletions
diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index be316a39d8..e5ad907320 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -92,8 +92,6 @@ gdk_display_get_app_launch_context gdk_display_notify_startup_complete gdk_display_get_default_seat gdk_display_list_seats -gdk_display_get_n_monitors -gdk_display_get_monitor gdk_display_get_monitors gdk_display_get_monitor_at_surface gdk_display_get_clipboard diff --git a/gdk/broadway/gdkdisplay-broadway.c b/gdk/broadway/gdkdisplay-broadway.c index 9daee6ea15..5e06b27497 100644 --- a/gdk/broadway/gdkdisplay-broadway.c +++ b/gdk/broadway/gdkdisplay-broadway.c @@ -319,24 +319,6 @@ gdk_broadway_display_hide_keyboard (GdkBroadwayDisplay *display) _gdk_broadway_server_set_show_keyboard (display->server, FALSE); } -static int -gdk_broadway_display_get_n_monitors (GdkDisplay *display) -{ - return 1; -} - -static GdkMonitor * -gdk_broadway_display_get_monitor (GdkDisplay *display, - int monitor_num) -{ - GdkBroadwayDisplay *broadway_display = GDK_BROADWAY_DISPLAY (display); - - if (monitor_num == 0) - return broadway_display->monitor; - - return NULL; -} - static GListModel * gdk_broadway_display_get_monitors (GdkDisplay *display) { @@ -447,8 +429,6 @@ gdk_broadway_display_class_init (GdkBroadwayDisplayClass * class) display_class->create_surface = _gdk_broadway_display_create_surface; display_class->get_keymap = _gdk_broadway_display_get_keymap; - display_class->get_n_monitors = gdk_broadway_display_get_n_monitors; - display_class->get_monitor = gdk_broadway_display_get_monitor; display_class->get_monitors = gdk_broadway_display_get_monitors; display_class->get_setting = gdk_broadway_display_get_setting; } diff --git a/gdk/broadway/gdksurface-broadway.c b/gdk/broadway/gdksurface-broadway.c index 09eddb5aae..677cbdca00 100644 --- a/gdk/broadway/gdksurface-broadway.c +++ b/gdk/broadway/gdksurface-broadway.c @@ -776,7 +776,6 @@ gdk_broadway_surface_maximize (GdkSurface *surface) { GdkBroadwaySurface *impl; GdkDisplay *display; - GdkMonitor *monitor; GdkRectangle geom; if (GDK_SURFACE_DESTROYED (surface)) @@ -797,8 +796,7 @@ gdk_broadway_surface_maximize (GdkSurface *surface) impl->pre_maximize_height = surface->height; display = gdk_surface_get_display (surface); - monitor = gdk_display_get_monitor (display, 0); - gdk_monitor_get_geometry (monitor, &geom); + gdk_monitor_get_geometry (GDK_BROADWAY_DISPLAY (display)->monitor, &geom); gdk_broadway_surface_move_resize (surface, geom.x, geom.y, diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c index 7749b5e2ce..188e39af0a 100644 --- a/gdk/gdkdisplay.c +++ b/gdk/gdkdisplay.c @@ -1495,47 +1495,6 @@ gdk_display_list_seats (GdkDisplay *display) } /** - * gdk_display_get_n_monitors: - * @display: a #GdkDisplay - * - * Gets the number of monitors that belong to @display. - * - * The returned number is valid until the next emission of the - * #GdkDisplay::monitor-added or #GdkDisplay::monitor-removed signal. - * - * Returns: the number of monitors - */ -int -gdk_display_get_n_monitors (GdkDisplay *display) -{ - g_return_val_if_fail (GDK_IS_DISPLAY (display), 0); - - if (GDK_DISPLAY_GET_CLASS (display)->get_n_monitors == NULL) - return 1; - - return GDK_DISPLAY_GET_CLASS (display)->get_n_monitors (display); -} - -/** - * gdk_display_get_monitor: - * @display: a #GdkDisplay - * @monitor_num: number of the monitor - * - * Gets a monitor associated with this display. - * - * Returns: (nullable) (transfer none): the #GdkMonitor, or %NULL if - * @monitor_num is not a valid monitor number - */ -GdkMonitor * -gdk_display_get_monitor (GdkDisplay *display, - gint monitor_num) -{ - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - - return GDK_DISPLAY_GET_CLASS (display)->get_monitor (display, monitor_num); -} - -/** * gdk_display_get_monitors: * @display: a #GdkDisplay * @@ -1573,7 +1532,8 @@ gdk_display_get_monitor_at_surface (GdkDisplay *display, GdkSurface *surface) { GdkRectangle win; - int n_monitors, i; + GListModel *monitors; + guint i; int area = 0; GdkMonitor *best = NULL; GdkDisplayClass *class; @@ -1593,14 +1553,14 @@ gdk_display_get_monitor_at_surface (GdkDisplay *display, gdk_surface_get_geometry (surface, &win.x, &win.y, &win.width, &win.height); gdk_surface_get_origin (surface, &win.x, &win.y); - n_monitors = gdk_display_get_n_monitors (display); - for (i = 0; i < n_monitors; i++) + monitors = gdk_display_get_monitors (display); + for (i = 0; i < g_list_model_get_n_items (monitors); i++) { GdkMonitor *monitor; GdkRectangle mon, intersect; int overlap; - monitor = gdk_display_get_monitor (display, i); + monitor = g_list_model_get_item (monitors, i); gdk_monitor_get_geometry (monitor, &mon); gdk_rectangle_intersect (&win, &mon, &intersect); overlap = intersect.width *intersect.height; @@ -1609,6 +1569,7 @@ gdk_display_get_monitor_at_surface (GdkDisplay *display, area = overlap; best = monitor; } + g_object_unref (monitor); } return best; diff --git a/gdk/gdkdisplay.h b/gdk/gdkdisplay.h index 26918478c2..e7d65cf10b 100644 --- a/gdk/gdkdisplay.h +++ b/gdk/gdkdisplay.h @@ -107,11 +107,6 @@ GDK_AVAILABLE_IN_ALL GList * gdk_display_list_seats (GdkDisplay *display); GDK_AVAILABLE_IN_ALL -int gdk_display_get_n_monitors (GdkDisplay *display); -GDK_AVAILABLE_IN_ALL -GdkMonitor * gdk_display_get_monitor (GdkDisplay *display, - int monitor_num); -GDK_AVAILABLE_IN_ALL GListModel * gdk_display_get_monitors (GdkDisplay *self) G_GNUC_PURE; GDK_AVAILABLE_IN_ALL GdkMonitor * gdk_display_get_monitor_at_surface (GdkDisplay *display, diff --git a/gdk/gdkdisplayprivate.h b/gdk/gdkdisplayprivate.h index eeba7a359d..4e7d6e7ff5 100644 --- a/gdk/gdkdisplayprivate.h +++ b/gdk/gdkdisplayprivate.h @@ -155,9 +155,6 @@ struct _GdkDisplayClass GdkSeat * (*get_default_seat) (GdkDisplay *display); - int (*get_n_monitors) (GdkDisplay *display); - GdkMonitor * (*get_monitor) (GdkDisplay *display, - int index); GListModel * (*get_monitors) (GdkDisplay *self); GdkMonitor * (*get_monitor_at_surface) (GdkDisplay *display, GdkSurface *surface); diff --git a/gdk/gdkmonitor.c b/gdk/gdkmonitor.c index 3e4b3180a0..5157caea0a 100644 --- a/gdk/gdkmonitor.c +++ b/gdk/gdkmonitor.c @@ -31,10 +31,9 @@ * @Short_description: Object representing an output * * GdkMonitor objects represent the individual outputs that are - * associated with a #GdkDisplay. GdkDisplay has APIs to enumerate - * monitors with gdk_display_get_n_monitors() and gdk_display_get_monitor(), and - * to find particular monitors with gdk_display_get_primary_monitor() or - * gdk_display_get_monitor_at_surface(). + * associated with a #GdkDisplay. GdkDisplay keeps a #GListModel to enumerate + * and monitor monitors with gdk_display_get_monitors(). + * You can use gdk_display_get_monitor_at_surface() to find a particular monitor. */ /** diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index 47a9e7b53a..b1fbe2d576 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -148,11 +148,13 @@ get_monitor_for_rect (GdkDisplay *display, GdkMonitor *monitor; GdkRectangle workarea; GdkRectangle intersection; - gint i; + GListModel *monitors; + guint i; - for (i = 0; i < gdk_display_get_n_monitors (display); i++) + monitors = gdk_display_get_monitors (display); + for (i = 0; i < g_list_model_get_n_items (monitors); i++) { - monitor = gdk_display_get_monitor (display, i); + monitor = g_list_model_get_item (monitors, i); gdk_monitor_get_workarea (monitor, &workarea); if (gdk_rectangle_intersect (&workarea, rect, &intersection)) @@ -163,6 +165,7 @@ get_monitor_for_rect (GdkDisplay *display, best_monitor = monitor; } } + g_object_unref (monitor); } return best_monitor; diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c index 163423203a..f820eea6ca 100644 --- a/gdk/wayland/gdkdisplay-wayland.c +++ b/gdk/wayland/gdkdisplay-wayland.c @@ -952,31 +952,6 @@ _gdk_wayland_display_get_keymap (GdkDisplay *display) return tmp_keymap; } -static int -gdk_wayland_display_get_n_monitors (GdkDisplay *display) -{ - GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display); - - return g_list_model_get_n_items (G_LIST_MODEL (display_wayland->monitors)); -} - -static GdkMonitor * -gdk_wayland_display_get_monitor (GdkDisplay *display, - int monitor_num) -{ - GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display); - gpointer monitor; - - if (monitor_num < 0) - return NULL; - - monitor = g_list_model_get_item (G_LIST_MODEL (display_wayland->monitors), monitor_num); - if (monitor) - g_object_unref (monitor); - - return monitor; -} - static GListModel * gdk_wayland_display_get_monitors (GdkDisplay *display) { @@ -1052,8 +1027,6 @@ gdk_wayland_display_class_init (GdkWaylandDisplayClass *class) display_class->make_gl_context_current = gdk_wayland_display_make_gl_context_current; - display_class->get_n_monitors = gdk_wayland_display_get_n_monitors; - display_class->get_monitor = gdk_wayland_display_get_monitor; display_class->get_monitors = gdk_wayland_display_get_monitors; display_class->get_monitor_at_surface = gdk_wayland_display_get_monitor_at_surface; display_class->get_setting = gdk_wayland_display_get_setting; diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c index 9155d0b340..d5754d6577 100644 --- a/gdk/wayland/gdksurface-wayland.c +++ b/gdk/wayland/gdksurface-wayland.c @@ -744,9 +744,15 @@ _gdk_wayland_display_create_surface (GdkDisplay *display, g_object_ref (surface); /* More likely to be right than just assuming 1 */ - if (display_wayland->compositor_version >= WL_SURFACE_HAS_BUFFER_SCALE && - gdk_display_get_n_monitors (display) > 0) - impl->scale = gdk_monitor_get_scale_factor (gdk_display_get_monitor (display, 0)); + if (display_wayland->compositor_version >= WL_SURFACE_HAS_BUFFER_SCALE) + { + GdkMonitor *monitor = g_list_model_get_item (gdk_display_get_monitors (display), 0); + if (monitor) + { + impl->scale = gdk_monitor_get_scale_factor (monitor); + g_object_unref (monitor); + } + } gdk_wayland_surface_set_title (surface, get_default_title ()); diff --git a/gdk/win32/gdkdisplay-win32.c b/gdk/win32/gdkdisplay-win32.c index c445540815..03d914c023 100644 --- a/gdk/win32/gdkdisplay-win32.c +++ b/gdk/win32/gdkdisplay-win32.c @@ -949,35 +949,17 @@ gdk_win32_display_notify_startup_complete (GdkDisplay *display, /* nothing */ } -static int -gdk_win32_display_get_n_monitors (GdkDisplay *display) -{ - GdkWin32Display *win32_display = GDK_WIN32_DISPLAY (display); - - return g_list_model_get_n_items (win32_display->monitors); -} - - -static GdkMonitor * -gdk_win32_display_get_monitor (GdkDisplay *display, - int monitor_num) -{ - GdkWin32Display *win32_display = GDK_WIN32_DISPLAY (display); - GdkMonitor *monitor; - - monitor = g_list_model_get_item (win32_display->monitors, monitor_num); - if (monitor == NULL) - return NULL; - - g_object_unref (monitor); - return monitor; -} - GdkMonitor * gdk_win32_display_get_primary_monitor (GdkDisplay *display) { - /* We arrange for the first monitor in the array to also be the primiary monitor */ - return gdk_win32_display_get_monitor (display, 0); + GdkWin32Display *self = GDK_WIN32_DISPLAY (display); + GdkMonitor *result; + + /* We arrange for the first monitor in the array to also be the primary monitor */ + result = g_list_model_get_item (self->monitors, 0); + g_object_unref (result); + + return result; } static GListModel * @@ -1110,8 +1092,6 @@ gdk_win32_display_class_init (GdkWin32DisplayClass *klass) display_class->get_keymap = _gdk_win32_display_get_keymap; display_class->make_gl_context_current = _gdk_win32_display_make_gl_context_current; - display_class->get_n_monitors = gdk_win32_display_get_n_monitors; - display_class->get_monitor = gdk_win32_display_get_monitor; display_class->get_monitors = gdk_win32_display_get_monitors; #ifdef GDK_RENDERING_VULKAN diff --git a/gdk/win32/gdkscreen-win32.c b/gdk/win32/gdkscreen-win32.c index 94c404c819..4eb87eabfd 100644 --- a/gdk/win32/gdkscreen-win32.c +++ b/gdk/win32/gdkscreen-win32.c @@ -46,23 +46,22 @@ G_DEFINE_TYPE (GdkWin32Screen, gdk_win32_screen, G_TYPE_OBJECT) static void init_root_window_size (GdkWin32Screen *screen) { - GdkRectangle result; + GdkRectangle result = { 0, }; int i; GdkDisplay *display = _gdk_display; - int monitor_count; + GListModel *monitors; GdkMonitor *monitor; - monitor_count = gdk_display_get_n_monitors (display); - monitor = gdk_display_get_monitor (display, 0); - gdk_monitor_get_geometry (monitor, &result); + monitors = gdk_display_get_monitors (display); - for (i = 1; i < monitor_count; i++) + for (i = 1; i < g_list_model_get_n_items (monitors); i++) { GdkRectangle rect; - monitor = gdk_display_get_monitor (display, i); + monitor = g_list_model_get_item (monitors, i); gdk_monitor_get_geometry (monitor, &rect); gdk_rectangle_union (&result, &rect, &result); + g_object_unref (monitor); } screen->width = result.width; diff --git a/gdk/win32/gdksurface-win32.c b/gdk/win32/gdksurface-win32.c index 7455e8d065..4b647650b2 100644 --- a/gdk/win32/gdksurface-win32.c +++ b/gdk/win32/gdksurface-win32.c @@ -2051,21 +2051,22 @@ static void calculate_aerosnap_regions (GdkW32DragMoveResizeContext *context) { GdkDisplay *display; - gint n_monitors, monitor_idx, other_monitor_idx; + GListModel *monitors; + gint monitor_idx, other_monitor_idx; GdkWin32Surface *impl = GDK_WIN32_SURFACE (context->window); #if defined(MORE_AEROSNAP_DEBUGGING) gint i; #endif display = gdk_display_get_default (); - n_monitors = gdk_display_get_n_monitors (display); + monitors = gdk_display_get_monitors (display); #define _M_UP 0 #define _M_DOWN 1 #define _M_LEFT 2 #define _M_RIGHT 3 - for (monitor_idx = 0; monitor_idx < n_monitors; monitor_idx++) + for (monitor_idx = 0; monitor_idx < g_list_model_get_n_items (monitors); monitor_idx++) { GdkRectangle wa; GdkRectangle geometry; @@ -2076,12 +2077,13 @@ calculate_aerosnap_regions (GdkW32DragMoveResizeContext *context) gint thickness, trigger_thickness; GdkMonitor *monitor; - monitor = gdk_display_get_monitor (display, monitor_idx); + monitor = g_list_model_get_item (monitors, monitor_idx); + g_object_unref (monitors); gdk_monitor_get_workarea (monitor, &wa); gdk_monitor_get_geometry (monitor, &geometry); for (other_monitor_idx = 0; - other_monitor_idx < n_monitors && + other_monitor_idx < g_list_model_get_n_items (monitors) && (move_edge[_M_UP] || move_edge[_M_LEFT] || move_edge[_M_RIGHT] || resize_edge[_M_DOWN]); other_monitor_idx++) @@ -2092,7 +2094,8 @@ calculate_aerosnap_regions (GdkW32DragMoveResizeContext *context) if (other_monitor_idx == monitor_idx) continue; - other_monitor = gdk_display_get_monitor (display, other_monitor_idx); + other_monitor = g_list_model_get_item (monitors, other_monitor_idx); + g_object_unref (other_monitor); gdk_monitor_get_workarea (other_monitor, &other_wa); /* An edge triggers AeroSnap only if there are no @@ -2472,6 +2475,7 @@ _gdk_win32_surface_handle_aerosnap (GdkSurface *window, { GdkWin32Surface *impl; GdkDisplay *display; + GListModel *monitors; gint n_monitors; GdkSurfaceState surface_state = gdk_toplevel_get_state (GDK_TOPLEVEL (window)); gboolean minimized = surface_state & GDK_SURFACE_STATE_MINIMIZED; @@ -2481,7 +2485,8 @@ _gdk_win32_surface_handle_aerosnap (GdkSurface *window, impl = GDK_WIN32_SURFACE (window); display = gdk_surface_get_display (window); - n_monitors = gdk_display_get_n_monitors (display); + monitors = gdk_display_get_monitors (display); + n_monitors = g_list_model_get_n_items (monitors); monitor = gdk_display_get_monitor_at_surface (display, window); if (minimized && maximized) @@ -2527,10 +2532,15 @@ _gdk_win32_surface_handle_aerosnap (GdkSurface *window, } else if (impl->snap_state == GDK_WIN32_AEROSNAP_STATE_HALFLEFT) { + GdkMonitor *other; + unsnap (window, monitor); - snap_right (window, - monitor, - (gdk_win32_display_get_primary_monitor (monitor->display) == monitor) ? monitor : gdk_display_get_monitor (display, n_monitors - 1)); + if (gdk_win32_display_get_primary_monitor (monitor->display) == monitor) + other = g_object_ref (monitor); + else + other = g_list_model_get_item (monitors, n_monitors - 1); + snap_right (window, monitor, other); + g_object_unref (other); } else if (impl->snap_state == GDK_WIN32_AEROSNAP_STATE_HALFRIGHT) { @@ -2553,24 +2563,21 @@ _gdk_win32_surface_handle_aerosnap (GdkSurface *window, } else if (impl->snap_state == GDK_WIN32_AEROSNAP_STATE_HALFRIGHT) { + GdkMonitor *other; gint i; unsnap (window, monitor); - if (n_monitors == 1 || - monitor == gdk_display_get_monitor (display, n_monitors - 1)) - { - snap_left (window, monitor, monitor); - } - else - { - for (i = 0; i < n_monitors; i++) - { - if (monitor == gdk_display_get_monitor (display, i)) - break; - } + for (i = 0; i < n_monitors; i++) + { + other = g_list_model_get_item (monitors, i); + g_object_unref (other); + if (monitor == other) + break; + } - snap_left (window, monitor, gdk_display_get_monitor (display, i + 1)); - } + other = g_list_model_get_item (monitors, (i + 1) % n_monitors); + snap_left (window, monitor, other); + g_object_unref (other); } break; case GDK_WIN32_AEROSNAP_COMBO_SHIFTUP: @@ -3119,18 +3126,19 @@ get_monitor_at_point (GdkDisplay *display, int x, int y) { + GListModel *monitors; GdkMonitor *nearest = NULL; int nearest_dist = G_MAXINT; - int n_monitors, i; + guint i; - n_monitors = gdk_display_get_n_monitors (display); - for (i = 0; i < n_monitors; i++) + monitors = gdk_display_get_monitors (display); + for (i = 0; i < g_list_model_get_n_items (monitors); i++) { GdkMonitor *monitor; GdkRectangle geometry; int dist_x, dist_y, dist; - monitor = gdk_display_get_monitor (display, i); + monitor = g_list_model_get_item (monitors, i); gdk_monitor_get_geometry (monitor, &geometry); if (x < geometry.x) @@ -3175,6 +3183,8 @@ get_monitor_at_point (GdkDisplay *display, nearest = monitor; } + g_object_unref (monitor); + if (nearest_dist == 0) break; } diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c index ce7a463996..d060e08690 100644 --- a/gdk/x11/gdkdisplay-x11.c +++ b/gdk/x11/gdkdisplay-x11.c @@ -2831,34 +2831,6 @@ gdk_x11_display_get_default_seat (GdkDisplay *display) return NULL; } -static int -gdk_x11_display_get_n_monitors (GdkDisplay *display) -{ - GdkX11Display *x11_display = GDK_X11_DISPLAY (display); - - return g_list_model_get_n_items (G_LIST_MODEL (x11_display->monitors)); -} - - -static GdkMonitor * -gdk_x11_display_get_monitor (GdkDisplay *display, - int monitor_num) -{ - GdkX11Display *x11_display = GDK_X11_DISPLAY (display); - GdkMonitor *monitor; - - if (monitor_num < 0) - return NULL; - - monitor = g_list_model_get_item (G_LIST_MODEL (x11_display->monitors), monitor_num); - if (monitor) - g_object_unref (monitor); - - return monitor; - - return NULL; -} - static GListModel * gdk_x11_display_get_monitors (GdkDisplay *display) { @@ -2987,8 +2959,6 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class) display_class->get_default_seat = gdk_x11_display_get_default_seat; - display_class->get_n_monitors = gdk_x11_display_get_n_monitors; - display_class->get_monitor = gdk_x11_display_get_monitor; display_class->get_monitors = gdk_x11_display_get_monitors; display_class->get_setting = gdk_x11_display_get_setting; display_class->set_cursor_theme = gdk_x11_display_set_cursor_theme; diff --git a/gdk/x11/gdksurface-x11.c b/gdk/x11/gdksurface-x11.c index 6b6f08df45..092f72c663 100644 --- a/gdk/x11/gdksurface-x11.c +++ b/gdk/x11/gdksurface-x11.c @@ -1605,13 +1605,15 @@ void gdk_x11_surface_enter_leave_monitors (GdkSurface *surface) { GdkDisplay *display = gdk_surface_get_display (surface); - int n_monitors, i; + GListModel *monitors; + guint i; - n_monitors = gdk_display_get_n_monitors (display); - for (i = 0; i < n_monitors; i++) + monitors = gdk_display_get_monitors (display); + for (i = 0; i < g_list_model_get_n_items (monitors); i++) { - GdkMonitor *monitor = gdk_display_get_monitor (display, i); + GdkMonitor *monitor = g_list_model_get_item (monitors, i); gdk_x11_surface_check_monitor (surface, monitor); + g_object_unref (monitor); } } diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 315b9dfe19..6935877ac2 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -6592,9 +6592,13 @@ gtk_widget_get_scale_factor (GtkWidget *widget) display = _gtk_widget_get_display (widget); if (display) { - monitor = gdk_display_get_monitor (display, 0); + monitor = g_list_model_get_item (gdk_display_get_monitors (display), 0); if (monitor) - return gdk_monitor_get_scale_factor (monitor); + { + int result = gdk_monitor_get_scale_factor (monitor); + g_object_unref (monitor); + return result; + } } return 1; diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 5a755ef450..0deabfec16 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -4101,11 +4101,24 @@ gtk_window_guess_default_size (GtkWindow *window, surface = priv->surface; if (surface) - monitor = gdk_display_get_monitor_at_surface (display, surface); + { + monitor = gdk_display_get_monitor_at_surface (display, surface); + gdk_monitor_get_workarea (monitor, &workarea); + } else - monitor = gdk_display_get_monitor (display, 0); - - gdk_monitor_get_workarea (monitor, &workarea); + { + monitor = g_list_model_get_item (gdk_display_get_monitors (display), 0); + if (monitor) + { + gdk_monitor_get_workarea (monitor, &workarea); + g_object_unref (monitor); + } + else + { + workarea.width = G_MAXINT; + workarea.height = G_MAXINT; + } + } *width = workarea.width; *height = workarea.height; diff --git a/tests/animated-resizing.c b/tests/animated-resizing.c index b64559f439..9b5133a88d 100644 --- a/tests/animated-resizing.c +++ b/tests/animated-resizing.c @@ -176,9 +176,6 @@ main(int argc, char **argv) { GError *error = NULL; GtkWidget *da; - GdkDisplay *display; - GdkMonitor *monitor; - GdkRectangle monitor_bounds; gboolean done = FALSE; GOptionContext *context = g_option_context_new (NULL); @@ -212,10 +209,6 @@ main(int argc, char **argv) G_CALLBACK (on_map), NULL); on_frame (0.); - display = gtk_widget_get_display (window); - monitor = gdk_display_get_monitor (display, 0); - gdk_monitor_get_geometry (monitor, &monitor_bounds); - gtk_widget_show (window); while (!done) |