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:
parent
194e219825
commit
d9e1605122
1 changed files with 12 additions and 2 deletions
14
src/xterm.c
14
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
|
||||
|
|
Loading…
Add table
Reference in a new issue