mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-25 23:10:47 -08:00
Prevent crashes upon trying to focus a child frame on click
* src/xterm.c (handle_one_xevent): Do not try to activate override-redirect frames. Explain why. (x_focus_frame): Catch errors around XSetInputFocus.
This commit is contained in:
parent
c0474ca21d
commit
83a497ee87
1 changed files with 12 additions and 1 deletions
13
src/xterm.c
13
src/xterm.c
|
|
@ -21135,8 +21135,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||
|
||||
if (FRAME_PARENT_FRAME (f) || (hf && frame_ancestor_p (f, hf)))
|
||||
{
|
||||
x_ignore_errors_for_next_request (dpyinfo);
|
||||
XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
|
||||
RevertToParent, event->xbutton.time);
|
||||
x_stop_ignoring_errors (dpyinfo);
|
||||
|
||||
if (FRAME_PARENT_FRAME (f))
|
||||
XRaiseWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f));
|
||||
}
|
||||
|
|
@ -22838,9 +22841,13 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||
}
|
||||
#else
|
||||
/* Non-no toolkit builds without GTK 3 use core
|
||||
events to handle focus. */
|
||||
events to handle focus. Errors are still
|
||||
caught here in case the window is not
|
||||
viewable. */
|
||||
x_ignore_errors_for_next_request (dpyinfo);
|
||||
XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
|
||||
RevertToParent, xev->time);
|
||||
x_stop_ignoring_errors (dpyinfo);
|
||||
#endif
|
||||
if (FRAME_PARENT_FRAME (f))
|
||||
XRaiseWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f));
|
||||
|
|
@ -27602,6 +27609,10 @@ x_focus_frame (struct frame *f, bool noactivate)
|
|||
else
|
||||
{
|
||||
if (!noactivate
|
||||
/* If F is override-redirect, use SetInputFocus instead.
|
||||
Override-redirect frames are not subject to window
|
||||
management. */
|
||||
&& !FRAME_OVERRIDE_REDIRECT (f)
|
||||
/* If F is a child frame, use SetInputFocus instead. This
|
||||
may not work if its parent is not activated. */
|
||||
&& !FRAME_PARENT_FRAME (f)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue