From: Po Lu Date: Wed, 9 Mar 2022 12:43:59 +0000 (+0800) Subject: Fix GTK widgets not appearing inside child frames X-Git-Tag: emacs-29.0.90~1942 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b883e8bc65d314273b63da873e1cdbbac23978e9;p=emacs.git Fix GTK widgets not appearing inside child frames * src/xfns.c (x_set_parent_frame): Disable GTK's own frame synchronization in child frames. --- diff --git a/src/xfns.c b/src/xfns.c index c71f2b025f4..cf5823c645b 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -919,6 +919,9 @@ static void x_set_parent_frame (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) { struct frame *p = NULL; +#ifdef HAVE_GTK3 + GdkWindow *window; +#endif if (!NILP (new_value) && (!FRAMEP (new_value) @@ -942,6 +945,14 @@ x_set_parent_frame (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu (GTK_CONTAINER (FRAME_GTK_OUTER_WIDGET (f)), p ? GTK_RESIZE_IMMEDIATE : GTK_RESIZE_QUEUE); #endif + +#ifdef HAVE_GTK3 + if (p) + { + window = gtk_widget_get_window (FRAME_GTK_OUTER_WIDGET (f)); + gdk_x11_window_set_frame_sync_enabled (window, false); + } +#endif unblock_input (); fset_parent_frame (f, new_value);