Subject: bug#64980: 29.1; Context menu must be held on Lucid toolkit

From: Cosimo Agati <[email-masked]>
Date: Mon, 31 Jul 2023 19:32:00 +0200

Dear GNU Emacs maintainers,

I am using the graphical version of GNU Emacs 29.1, compiled with
the Lucid (Athena) toolkit and downloaded straight from upstream,
without using a downstream distribution package.

When enabling context-menu mode, the menu seems to close right
away when the right mouse button is released.  I need to hold the
button down to keep the context menu open.

This did not happen on GNU Emacs 28.2: on that release, the
context menu is toggled, as in all previous versions and
consistently with the majority of existing graphical applications
which use a right-click context menu.

In rare occasions, the context menu does stay open, but the vast
majority of the time it just closes right away the button is held.

The bug is easily reproducible from 'emacs -Q': start Emacs,
enable Context menu mode via 'M-x context-menu-mode' and try
opening the context menu with the right click button.

At first, I thought about a potential new feature, which would
allow the user to choose whether to hold or toggle the context
menu.  However, I could not find such functionality mentioned
anywhere in the manual, let alone anything in existing Emacs
variables or functions.

Since the problem is not present in previous releases of GNU Emacs
and since both 29.1 and 28.2 on my system are linked against the
exact same release of the Athena toolkit, I strongly suspect this
to be a bug in Emacs itself.

In GNU Emacs 29.1 (build 2, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.16.0, Xaw3d scroll bars) of 2023-07-30 built on
 piccione
Windowing system distributor 'The X.Org Foundation', version
11.0.12201009
System Description: Debian GNU/Linux 12 (bookworm)

Configured using:
 'configure 'CFLAGS=-march=native -O2 -pipe' --disable-profiling
 --enable-link-time-optimization --with-native-compilation
 --with-x-toolkit=lucid'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT
MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND
SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XAW3D XDBE XIM
XINPUT2 XPM LUCID ZLIB

Important settings:
  value of $LANG: it_IT.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
  company-quickhelp-mode: t
  company-quickhelp-local-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  erc-networks-mode: t
  paredit-mode: t
  highlight-quoted-mode: t
  aggressive-indent-mode: t
  electric-pair-mode: t
  display-fill-column-indicator-mode: t
  display-line-numbers-mode: t
  dired-async-mode: t
  key-chord-mode: t
  hexl-follow-ascii: t
  global-git-commit-mode: t
  csv-field-index-mode: t
  yas-minor-mode: t
  shell-dirtrack-mode: t
  flymake-mode: t
  TeX-PDF-mode: t
  global-hl-line-mode: t
  global-auto-revert-mode: t
  fido-vertical-mode: t
  icomplete-vertical-mode: t
  icomplete-mode: t
  fido-mode: t
  desktop-save-mode: t
  server-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  window-divider-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  overwrite-mode: overwrite-mode-textual
  hs-minor-mode: t

Load-path shadows:
/home/cosimone/.config/emacs/elpa/hydra-0.15.0/lv hides
/home/cosimone/.config/emacs/elpa/lv-0.15.0/lv
/home/cosimone/.config/emacs/elpa/transient-0.4.1/transient hides
/usr/local/share/emacs/29.1/lisp/transient

Features:
(shadow flyspell company-quickhelp company-oddmuse
company-keywords company-etags company-gtags company-dabbrev-code
company-files company-capf company-cmake company-xcode
company-clang company-semantic company-eclim company-bbdb
mail-extr emacsbug tabify cus-start completion ibuf-macs
modus-vivendi-theme pcmpl-git pcmpl-unix notmuch notmuch-tree
notmuch-jump notmuch-hello notmuch-show notmuch-print
notmuch-crypto notmuch-mua notmuch-message notmuch-draft
notmuch-maildir-fcc notmuch-address notmuch-company notmuch-parser
notmuch-wash coolj goto-addr icalendar diary-lib diary-loaddefs
notmuch-tag notmuch-lib notmuch-version notmuch-compat mm-view
mml-smime smime dig vc-hg vc-bzr vc-src vc-sccs vc-svn
magit-extras misearch multi-isearch shortdoc proced erc-list
erc-menu erc-join erc-ring erc-pcomplete erc-track erc-match
erc-button erc-fill erc-stamp erc-netsplit erc-goodies erc
erc-backend erc-networks erc-common erc-compat erc-loaddefs
ibuf-ext ibuffer ibuffer-loaddefs modus-operandi-theme
modus-themes jka-compr make-mode hi-lock font-latex latexenc
preview tex-mode css-mode vc-cvs vc-rcs log-view macrostep-c
conf-mode sh-script executable dired-x paredit highlight-quoted
aggressive-indent elec-pair display-fill-column-indicator
display-line-numbers init dired-async delight key-chord pulse
tree-widget inferior-slime slime-indentation slime-cl-indent
cl-indent slime-trace-dialog slime-fontifying-fu slime-package-fu
slime-references slime-compiler-notes-tree slime-scratch
slime-presentations bridge slime-macrostep slime-mdot-fu
slime-enclosing-context slime-fuzzy slime-fancy-trace
slime-fancy-inspector slime-c-p-c slime-autodoc
slime-editing-commands slime-repl slime-parse mule-util slime gud
apropos hyperspec slime-autoloads cmacexp macrostep
macrostep-autoloads ztree-diff ztree-dir ztree-diff-model
ztree-view ztree-protocol ztree-util ztree-autoloads
zenburn-theme-autoloads yasnippet-snippets-autoloads
yasnippet-snippets xref-union-autoloads ws-butler-autoloads
which-key which-key-autoloads vundo-autoloads term disp-table
ehelp term/xterm xterm vterm-autoloads undo-tree-autoloads tuareg
tuareg-compat tuareg-opam smie caml-types caml-help
tuareg-autoloads caml view caml-autoloads sqlite triples-backups
triples triples-autoloads tNFA heap trie-autoloads queue
tNFA-autoloads queue-autoloads heap-autoloads
switchy-window-autoloads sublime-themes-autoloads
standard-light-theme standard-dark-theme standard-themes
standard-themes-autoloads solarized-palettes solarized
solarized-faces solarized-theme-autoloads smart-yank-autoloads
site-lisp-autoloads sicp-autoloads loc-changes realgud-autoloads
test-simple load-relative load-relative-autoloads
loc-changes-autoloads test-simple-autoloads rainbow-mode-autoloads
paredit-autoloads other-frame-window-autoloads
organic-green-theme-autoloads hexl nhexl-mode-autoloads texnfo-upd
muse-book muse-import-xml muse-colors muse-ipc cgi httpd
muse-latex muse-html muse-xml-common muse-mode muse-publish
muse-project muse-protocols muse-regexps muse muse-nested-tags
muse-autoloads multishell savehist multishell-autoloads
minimap-autoloads memory-usage-autoloads eww mm-url gnus nnheader
range markdown-mode checkdoc markdown-mode-autoloads
markchars-autoloads git-rebase let-alist magit-bookmark
magit-submodule magit-obsolete magit-blame magit-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch
magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset
magit-files magit-refs magit-status magit magit-repos magit-apply
magit-wip magit-log magit-diff smerge-mode diff git-commit
magit-core magit-autorevert magit-margin magit-transient
magit-process magit-mode magit-git magit-section magit-utils
which-func magit-autoloads with-editor transient log-edit
pcvs-util add-log git-commit-autoloads benchmark
magit-section-autoloads transient-autoloads with-editor-autoloads
loccur-autoloads lispy-tags zoutline semantic/db eieio-base
semantic/util-modes semantic/util semantic semantic/tag cedet
ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help
ediff-init ediff-util swiper lispy-inline inf-lisp lispy-autoloads
elp iedit-rect iedit sgml-mode facemenu iedit-lib iedit-autoloads
ivy swiper-autoloads delsel ivy-faces ivy-overlay colir
ivy-autoloads zoutline-autoloads kmb-autoloads key-chord-autoloads
keepass-mode-autoloads jumpc-autoloads irony-completion
irony-eldoc-autoloads irony-snippet irony-cdb-json irony-cdb irony
irony-iotask irony-autoloads wdired ioccur-autoloads
hydra-examples rect hydra lv hydra-autoloads lv-autoloads
highlight-quoted-autoloads highlight-indent-guides-autoloads
highlight-defined-autoloads inf-haskell haskell-indent
haskell-completions haskell-c2hs haskell-decl-scan
highlight-uses-mode haskell-modules haskell-sandbox
haskell-navigate-imports haskell-repl haskell-svg haskell-collapse
haskell-debug haskell-interactive-mode haskell-presentation-mode
haskell-compile haskell-process haskell-session haskell-hoogle
haskell-mode haskell-cabal haskell-utils haskell-font-lock
haskell-indentation haskell-string haskell-sort-imports
haskell-lexeme haskell-align-imports haskell-complete-module
haskell-ghc-support dabbrev haskell-customize
haskell-mode-autoloads gruvbox gruvbox-theme-autoloads autothemer
autothemer-autoloads graphviz-dot-mode-autoloads gpr-skel
wisi-skel gpr-process gpr-indent-user-options gpr-mode-autoloads
gnat-compiler gnat-compiler-autoloads skeleton wisi-process-parse
wisi-prj wisi wisi-fringe semantic/lex semantic/fw mode-local
find-file wisi-parse-common wisi-autoloads hippie-exp
ggtags-autoloads gcmh-autoloads flylisp-autoloads
faff-theme-autoloads cc-bytecomp fillcode-autoloads xcb-xim
xcb-systemtray xcb-xembed exwm exwm-input xcb-keysyms exwm-manage
exwm-floating xcb-cursor exwm-layout exwm-workspace exwm-core
exwm-autoloads xcb-xv xcb-shm xcb-xlib xcb-ewmh xcb-sync xcb-randr
xcb-icccm xcb xcb-xkb comp comp-cstr xcb-xfixes xcb-shape
xcb-render xcb-xproto xcb-types xcb-debug xelb-autoloads elpy-rpc
elpy-shell elpy-profile elpy-django elpy-refactor ido grep
cus-edit pyvenv s elpy-autoloads highlight-indentation-autoloads
pyvenv-autoloads s-autoloads simple-httpd elfeed-web-autoloads
simple-httpd-autoloads elfeed-show elfeed-search elfeed-csv elfeed
elfeed-curl url-queue xml-query vc-git diff-mode shr pixel-fill
kinsoku url-file svg dom elfeed-log elfeed-db elfeed-lib
elfeed-autoloads cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs
electric-spacing-autoloads el-search hideshow help-fns stream-x
cl-print help-macro thunk el-search-autoloads stream
stream-autoloads ef-winter-theme ef-tritanopia-light-theme
ef-tritanopia-dark-theme ef-trio-light-theme ef-trio-dark-theme
ef-symbiosis-theme ef-summer-theme ef-spring-theme ef-night-theme
ef-light-theme ef-kassio-theme ef-frost-theme ef-elea-light-theme
ef-elea-dark-theme ef-duo-light-theme ef-duo-dark-theme
ef-deuteranopia-light-theme ef-deuteranopia-dark-theme
ef-day-theme ef-dark-theme ef-cyprus-theme ef-cherie-theme
ef-bio-theme ef-autumn-theme ef-themes ef-themes-autoloads
org-element org-persist xdg org-id org-refile avl-tree
easy-kill-autoloads easy-escape easy-escape-autoloads
dmenu-autoloads dismal keystroke dismal-simple-menus rmatrix heaps
vectors dismal-menu3 make-km-aliases simple-menu dismal-mouse3
dismal-data-structures dismal-autoloads disk-usage-autoloads vc
vc-dispatcher disaster-autoloads dired-preview-autoloads
dired-git-info-autoloads ls-lisp dired-du find-dired
dired-du-autoloads diffview-autoloads ob-shell imenu em-hist
em-pred esh-mode eshell esh-cmd esh-ext esh-opt esh-proc esh-io
esh-arg esh-module esh-groups esh-util detached tramp
tramp-loaddefs trampver tramp-integration files-x tramp-compat
parse-time iso8601 notifications detached-autoloads
delight-autoloads face-remap darkroom-autoloads cycle-quotes
cycle-quotes-autoloads cursory-autoloads csv-mode sort
csv-mode-autoloads pos-tip company-quickhelp-autoloads
pos-tip-autoloads tempo ispell etags fileloop generator xref
company-dabbrev company-template company company-autoloads
common-lisp-snippets-autoloads common-lisp-snippets cl org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src
ob-comint org-pcomplete org-list org-footnote org-faces
org-entities noutline outline ob-emacs-lisp ob-core ob-eval
org-cycle org-table ol org-fold org-fold-core org-keys oc
org-loaddefs cal-menu calendar cal-loaddefs org-version org-compat
org-macs format-spec edebug yasnippet yasnippet-autoloads
color-theme-sanityinc-tomorrow
color-theme-sanityinc-tomorrow-autoloads
color-theme-modern-autoloads python treesit color advice
color-identifiers-mode-autoloads dash dash-autoloads
context-coloring context-coloring-autoloads
clipboard-collector-autoloads clang-format-autoloads reftex
reftex-loaddefs reftex-vars cdlatex-autoloads captain-autoloads
caps-lock-autoloads rfc1345 cl-extra quail cape compat
cape-autoloads ert-x wid-edit compat-macs compat-autoloads
bug-hunter bug-hunter-autoloads buffer-expose-autoloads bookmark
blist-autoloads shell pcomplete bash-completion-autoloads
auto-header-autoloads auto-correct-autoloads timezone texinfo
texinfo-loaddefs toolbar-x reporter context plain-tex latex
edmacro kmacro latex-flymake flymake-proc flymake project
thingatpt tex-ispell tex-style tex crm dbus xml texmathp info
auctex-autoloads tex-site smtpmail dired-aux async bug-reference
async-autoloads pcase ascii-art-to-unicode-autoloads
aggressive-indent-autoloads aggressive-completion-autoloads
anti-zenburn-theme-autoloads all-autoloads alect-themes
alect-themes-autoloads aircon-theme-autoloads
ahungry-theme-autoloads ace-window ace-window-autoloads avy rx
easy-mmode ert pp ewoc debug backtrace help-mode find-func
warnings icons compile comint ansi-osc ansi-color ring
avy-autoloads loaddefs-gen lisp-mnt radix-tree tar-mode arc-mode
archive-mode mm-archive message sendmail yank-media dired
dired-loaddefs rfc822 mml mml-sec epa derived gnus-util
text-property-search time-date mailabbrev gmm-utils mailheader
mm-decode mm-bodies mm-encode mail-utils gnutls network-stream
url-cache url-http url-auth mail-parse rfc2231 rfc2047 rfc2045
mm-util ietf-drums mail-prsvr url-gw nsm puny epg rfc6068
epg-config finder-inf windmove hl-line autorevert filenotify
icomplete desktop frameset cus-load server package browse-url url
url-proxy url-privacy url-expand url-methods url-history
url-cookie generate-lisp-file url-domsuf url-util mailcap
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
password-cache json subr-x map byte-opt gv bytecomp byte-compile
url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc
paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-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
dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo x-toolkit xinput2 x multi-tty
make-network-process native-compile emacs)

Memory information:
((conses 16 3323118 381665)
 (symbols 48 127969 2)
 (strings 32 632118 50564)
 (string-bytes 1 19051640)
 (vectors 16 284802)
 (vector-slots 8 5493200 414008)
 (floats 8 2255 2464)
 (intervals 56 69128 9506)
 (buffers 976 276))

-- 
Cosimo Agati