patch 9.0.0984: GUI: remote_foreground() does not always work

Problem:    GUI: remote_foreground() does not always work. (Ron Aaron)
Solution:   For GTK use gtk_window_set_keep_above(). (issue #11641)
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 8b75ba8..ea76e33 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -780,7 +780,8 @@
 	    for (i = 0; i < list->num_rectangles; i++)
 	    {
 		const cairo_rectangle_t *rect = &list->rectangles[i];
-		cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height);
+		cairo_rectangle(cr, rect->x, rect->y,
+						    rect->width, rect->height);
 		cairo_fill(cr);
 	    }
 	}
@@ -6313,7 +6314,17 @@
     void
 gui_mch_set_foreground(void)
 {
+    // Just calling gtk_window_present() used to work in the past, but now this
+    // sequence appears to be needed:
+    // - Show the window on top of others.
+    // - Present the window (also shows it above others).
+    // - Do not the window on top of others (otherwise it would be stuck there).
+    gtk_window_set_keep_above(GTK_WINDOW(gui.mainwin), TRUE);
+    gui_may_flush();
     gtk_window_present(GTK_WINDOW(gui.mainwin));
+    gui_may_flush();
+    gtk_window_set_keep_above(GTK_WINDOW(gui.mainwin), FALSE);
+    gui_may_flush();
 }
 #endif