Subject: bug#64625: 30.0.50; deleting a focused child frame causes Emacs to ignore all input

From: Andrey Listopadov <[email-masked]>
Date: Fri, 14 Jul 2023 20:12:18 +0300

Hello.

I've tried making a mode that creates an alternative window manager
within emacs that uses child frames on an infinite pannable desktop
instead of window splits.  When I've implemented the button that closes
the window, I've noticed, that when I'm closing the last input, Emacs
stops recognizing any keyboard events, and the point in the root window
disappears.

This can be reproduced with the following steps:

1. Call (make-frame `((parent-frame . ,(selected-frame))))
2. Focus the newly created child-frame (with a mouse or elsehow)
3. Call C-x 5 0 to kill the frame.
4. Try typing or calling M-x in the original Emacs window.

Weirdly enough, the only thing that Emacs responds to and restores the
focus are the arrow keys. You can also go to File > New Frame menu and
it will fix the issue for the new frame, but the old one is still
broken.

Am I supposed to delete focused child-frames in a different way or is it
a bug?  I've tried using `handle-delete-frame' by passing it the list
that resembles the event the function expects, but no luck.  I've also
tried calling `select-frame' and `select-window' to change focus to the
root window, but it doesn't help either.

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.38, cairo version 1.17.8) of 2023-07-07 built on toolbox
Repository revision: 37101780243d083e8773c255242aa26614f22a14
Repository branch: master
System Description: Fedora Linux 38 (Container Image)

Configured using:
 'configure --without-compress-install --with-native-compilation=aot
 --with-pgtk --with-mailutils --with-xwidgets
 --prefix=/var/home/alist/.local'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER XIM XWIDGETS GTK3 ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils time-date cl-loaddefs
comp comp-cstr warnings icons subr-x rx cl-seq cl-macs gv cl-extra
help-mode bytecomp byte-compile cl-lib rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/pgtk-win pgtk-win term/common-win pgtk-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads
xwidget-internal dbusbind inotify dynamic-setting system-font-setting
font-render-setting cairo gtk pgtk lcms2 multi-tty move-toolbar
make-network-process native-compile emacs)

Memory information:
((conses 16 79975 14023) (symbols 48 7183 0) (strings 32 19825 1255)
 (string-bytes 1 644867) (vectors 16 16854)
 (vector-slots 8 339865 14526) (floats 8 31 56) (intervals 56 237 0)
 (buffers 984 11))