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)
This commit is contained in:
Po Lu 2023-10-17 08:33:25 +08:00
parent 194e219825
commit d9e1605122

View file

@ -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