--- gtkwindows.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/gtkwindows.c b/gtkwindows.c index 353e594d..2803627d 100644 --- a/gtkwindows.c +++ b/gtkwindows.c @@ -104,10 +104,23 @@ dialog_mapped(GtkWidget * window, gpointer UNUSED(data)) { GdkRectangle monitorrect; GtkAllocation allocation; - GdkScreen *screen = gtk_widget_get_screen(window); gtk_widget_get_allocation(window, &allocation); +#if GTK_CHECK_VERSION(3,0,0) + GdkDisplay *display = gtk_widget_get_display(window); + if (!display || gdk_display_get_n_monitors(display) == 1) { + monitorrect.x = 0; + monitorrect.y = 0; + monitorrect.width = gdk_screen_width(); + monitorrect.height = gdk_screen_height(); + } else { + GdkMonitor *monitor = gdk_display_get_monitor_at_window(display, + gtk_widget_get_window(window)); + gdk_monitor_get_geometry(monitor, &monitorrect); + } +#else + GdkScreen *screen = gtk_widget_get_screen(window); if (!screen || gdk_screen_get_n_monitors(screen) == 1) { monitorrect.x = 0; monitorrect.y = 0; @@ -117,6 +130,7 @@ dialog_mapped(GtkWidget * window, gpointer UNUSED(data)) int monitor = gdk_screen_get_monitor_at_window(screen, gtk_widget_get_window(window)); gdk_screen_get_monitor_geometry(screen, monitor, &monitorrect); } +#endif if (allocation.width > monitorrect.width || allocation.height > monitorrect.height) { /* Dialog bigger than window! (just show at top left) */ gtk_window_move(GTK_WINDOW(window), monitorrect.x, monitorrect.y); -- 2.34.1