patch 8.2.2626: GTK3: error when starting up and -geometry is given

Problem:    GTK3: error when starting up and -geometry is given. (Dominique
            Pellé)
Solution:   Use another function to get the monitor if the window has not been
            created yet. (closes #7978)
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 3fdff4d..249b208 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -4168,9 +4168,17 @@
     GdkRectangle geometry;
     GdkWindow *win = gtk_widget_get_window(wid);
 #if GTK_CHECK_VERSION(3,22,0)
-    GdkDisplay *dpy = gtk_widget_get_display(wid);
-    GdkMonitor *monitor = gdk_display_get_monitor_at_window(dpy, win);
+    GdkDisplay *dpy;
+    GdkMonitor *monitor;
 
+    if (wid != NULL && gtk_widget_get_realized(wid))
+	dpy = gtk_widget_get_display(wid);
+    else
+	dpy = gdk_display_get_default();
+    if (win != NULL)
+	monitor = gdk_display_get_monitor_at_window(dpy, win);
+    else
+	monitor = gdk_display_get_monitor_at_point(dpy, point_x, point_y);
     gdk_monitor_get_geometry(monitor, &geometry);
 #else
     GdkScreen* screen;
@@ -4180,10 +4188,10 @@
 	screen = gtk_widget_get_screen(wid);
     else
 	screen = gdk_screen_get_default();
-    if (win == NULL)
-	monitor = gdk_screen_get_monitor_at_point(screen, point_x, point_y);
-    else
+    if (win != NULL)
 	monitor = gdk_screen_get_monitor_at_window(screen, win);
+    else
+	monitor = gdk_screen_get_monitor_at_point(screen, point_x, point_y);
     gdk_screen_get_monitor_geometry(screen, monitor, &geometry);
 #endif
     *screen_x = geometry.x;