]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve handling of xsettings events
authorPo Lu <luangruo@yahoo.com>
Mon, 1 Aug 2022 11:00:48 +0000 (19:00 +0800)
committerPo Lu <luangruo@yahoo.com>
Mon, 1 Aug 2022 11:01:37 +0000 (19:01 +0800)
* src/xsettings.c (xft_settings_event):
* src/xsettings.h: Return if the event was handled.
* src/xterm.c (handle_one_xevent): If it was, don't handle the
event any further.

src/xsettings.c
src/xsettings.h
src/xterm.c

index c29a844e0a8bf638aab2e04780c911f00e19a247..9c60ff825a4800859364cf57892134f42476768b 100644 (file)
@@ -964,9 +964,10 @@ read_and_apply_settings (Display_Info *dpyinfo, bool send_event_p)
 #endif
 
 #ifndef HAVE_PGTK
-/* Check if EVENT for the display in DPYINFO is XSettings related.  */
+/* Check if EVENT for the display in DPYINFO is XSettings related.
+   Return true if it is, after performing associated side effects.  */
 
-void
+bool
 xft_settings_event (Display_Info *dpyinfo, const XEvent *event)
 {
   bool check_window_p = false, apply_settings_p = false;
@@ -1004,6 +1005,8 @@ xft_settings_event (Display_Info *dpyinfo, const XEvent *event)
 
   if (apply_settings_p)
     read_and_apply_settings (dpyinfo, true);
+
+  return check_window_p || apply_settings_p;
 }
 #endif
 
index 5e5df37062b233876c5b4b2efa40767b12a44854..833c2b367dcf882c2df1373d0951f9bd2d4238f5 100644 (file)
@@ -36,7 +36,7 @@ typedef struct pgtk_display_info Display_Info;
 
 extern void xsettings_initialize (Display_Info *);
 #ifndef HAVE_PGTK
-extern void xft_settings_event (Display_Info *, const XEvent *);
+extern bool xft_settings_event (Display_Info *, const XEvent *);
 #endif
 extern const char *xsettings_get_system_font (void);
 #ifdef USE_LUCID
index bf6061d30eb57751e5ee08639942959b230a6ca4..c34fb3eb362c0210c37fa37d93b71b6747c29425 100644 (file)
@@ -17170,7 +17170,8 @@ handle_one_xevent (struct x_display_info *dpyinfo,
          goto done;
 #endif
 
-        xft_settings_event (dpyinfo, event);
+        if (xft_settings_event (dpyinfo, event))
+         goto done;
 
        f = any;
        /* We don't want to ever leak tooltip frames to Lisp code.  */