]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix GTK widgets not appearing inside child frames
authorPo Lu <luangruo@yahoo.com>
Wed, 9 Mar 2022 12:43:59 +0000 (20:43 +0800)
committerPo Lu <luangruo@yahoo.com>
Wed, 9 Mar 2022 12:43:59 +0000 (20:43 +0800)
* src/xfns.c (x_set_parent_frame): Disable GTK's own frame
synchronization in child frames.

src/xfns.c

index c71f2b025f493fb8670b9587d74a640c1d1c2e29..cf5823c645b38786775765bee88c230b6ad7ab6e 100644 (file)
@@ -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);