From: Po Lu Date: Tue, 17 Oct 2023 00:33:25 +0000 (+0800) Subject: Correctly register focus events concomitant with alpha changes X-Git-Tag: emacs-29.1.90~3 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d9e1605122b4ba70a55f7b168505b7d7f8d2bdd6;p=emacs.git Correctly register focus events concomitant with alpha changes * src/xterm.c (x_frame_highlight, x_frame_unhighlight): Skip changing the frame alpha when the frame is not eligible for focus state-specific alpha values; otherwise, the alpha might be reset by the time a alpha change wrought by a focus change arrives, impeding handle_one_xevent from subsequently restoring the initial value. (bug#66398) --- diff --git a/src/xterm.c b/src/xterm.c index 709705fc19e..6f335ea11da 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -11487,7 +11487,9 @@ x_frame_highlight (struct frame *f) x_stop_ignoring_errors (dpyinfo); unblock_input (); gui_update_cursor (f, true); - x_set_frame_alpha (f); + + if (!FRAME_X_OUTPUT (f)->alpha_identical_p) + x_set_frame_alpha (f); } static void @@ -11511,7 +11513,15 @@ x_frame_unhighlight (struct frame *f) unblock_input (); gui_update_cursor (f, true); - x_set_frame_alpha (f); + + /* Eschew modifying the frame alpha when the alpha values for + focused and background frames are identical; otherwise, this will + upset the order in which changes to the alpha property + immediately subsequent to a focus change are propagated into a + frame's alpha property. (bug#66398) */ + + if (!FRAME_X_OUTPUT (f)->alpha_identical_p) + x_set_frame_alpha (f); } /* The focus has changed. Update the frames as necessary to reflect