diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-12-01 19:40:55 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-12-01 19:40:55 +0000 |
commit | 023930d62e898652e68c938c6d7ac232556cb7a9 (patch) | |
tree | d6e22536d4ed8e65e0dfa1cacad56675ccbc3c44 /src/gui_gtk_x11.c | |
parent | 184a622adaa4c3d413ee0d38da063474b67ccfe3 (diff) |
patch 9.0.0984: GUI: remote_foreground() does not always workv9.0.0984
Problem: GUI: remote_foreground() does not always work. (Ron Aaron)
Solution: For GTK use gtk_window_set_keep_above(). (issue #11641)
Diffstat (limited to 'src/gui_gtk_x11.c')
-rw-r--r-- | src/gui_gtk_x11.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c index 8b75ba8c3e..ea76e3370a 100644 --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -780,7 +780,8 @@ draw_event(GtkWidget *widget UNUSED, 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 @@ gui_mch_iconify(void) 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 |