emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 0bedf074a6: Reenable frame sync for child frames after they're un


From: Po Lu
Subject: master 0bedf074a6: Reenable frame sync for child frames after they're unparented
Date: Fri, 13 May 2022 22:12:32 -0400 (EDT)

branch: master
commit 0bedf074a64db05bde6d67f58faef054362be258
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Reenable frame sync for child frames after they're unparented
    
    * src/xfns.c (x_set_parent_frame, Fx_create_frame): Use correct
    boolean constants.
    * src/xterm.c (handle_one_xevent): Enable frame synchronization
    upon receiving a sync request event.
---
 src/xfns.c  |  4 ++--
 src/xterm.c | 10 +++++++---
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/xfns.c b/src/xfns.c
index 7b5273e280..4ba7edcb98 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -973,7 +973,7 @@ x_set_parent_frame (struct frame *f, Lisp_Object new_value, 
Lisp_Object old_valu
       if (p)
        {
          window = gtk_widget_get_window (FRAME_GTK_OUTER_WIDGET (f));
-         gdk_x11_window_set_frame_sync_enabled (window, false);
+         gdk_x11_window_set_frame_sync_enabled (window, FALSE);
        }
 #endif
       unblock_input ();
@@ -4983,7 +4983,7 @@ This function is an internal primitive--use `make-frame' 
instead.  */)
 #endif
 #ifdef HAVE_GTK3
       gwin = gtk_widget_get_window (FRAME_GTK_OUTER_WIDGET (f));
-      gdk_x11_window_set_frame_sync_enabled (gwin, false);
+      gdk_x11_window_set_frame_sync_enabled (gwin, FALSE);
 #endif
       unblock_input ();
     }
diff --git a/src/xterm.c b/src/xterm.c
index 170f65d06f..0bec87438e 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -14765,17 +14765,21 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                    *finish = X_EVENT_DROP;
 #else
                    widget = FRAME_GTK_OUTER_WIDGET (f);
+                   window = gtk_widget_get_window (widget);
+                   eassert (window);
+
+                   /* This could be a (former) child frame for which
+                      frame synchronization was disabled.  Enable it
+                      now.  */
+                   gdk_x11_window_set_frame_sync_enabled (window, TRUE);
 
                    if (widget && !FRAME_X_OUTPUT (f)->xg_sync_end_pending_p)
                      {
-                       window = gtk_widget_get_window (widget);
-                       eassert (window);
                        frame_clock = gdk_window_get_frame_clock (window);
                        eassert (frame_clock);
 
                        gdk_frame_clock_request_phase (frame_clock,
                                                       
GDK_FRAME_CLOCK_PHASE_BEFORE_PAINT);
-
                        FRAME_X_OUTPUT (f)->xg_sync_end_pending_p = true;
                      }
 #endif



reply via email to

[Prev in Thread] Current Thread [Next in Thread]