Subject: bug#11148: 23.3; x-popup-menu not behaving as documented

From: "Dino Chiesa" <[email-masked]>
Date: Sun, 1 Apr 2012 08:45:12 -0700

These tests were performed on Windows. 

As documented here
http://www.gnu.org/software/emacs/manual/html_node/elisp/Simple-Menu-Items.html#Simple-Menu-Items

if the binding on a menu item is nil, then the mnenu item is
unselectable.

But this elisp code: 

    (x-popup-menu t (list "TITLE" (list
                                "PANE"  
                                (list "menu item 1" nil)
                                (list "menu item 2" nil))))

...shows a menu in which both items are selectable. 

This bug may be relevant to bug #11138. One of the proposed fixes for
#11138 at the time of this report is to render a multi-line dialog box
as a menu, with each "line" in the message displayed as an unselectable
menu item.  But this brief test seems to indicate that the
"unselectable" menu items are not really unselectable, at least on Windows.
In that case the proposed fix would be unsatisfactory.

I'd like to also raise a documentation bug, as well: there ought to be
examples showing how to use x-popup-menu, on the page I cited above. 
A few simple examples will make this method much more usable.

In particular, if the result I reported here is due to incorrect usage on my part, 
providing examples in the documentation is the way to fix it. Even if I am using 
this function correctly, this example (and others) ought to be put into the 
documentation to illustrate the proper use of "unselectable" menu items. 

Thanks.

In GNU Emacs 23.3.1 (i386-mingw-nt6.1.7601)
of 2011-03-10 on 3249CTO
Windowing system distributor `Microsoft Corp.', version 6.1.7601
configured using `configure --with-gcc (4.5) --no-opt --cflags -Ic:/imagesupport/include'

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: ENU
  value of $XMODIFIERS: nil
  locale-coding-system: cp1252
  default enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  auto-revert-mode: t
  recentf-mode: t
  yas/global-mode: t
  yas/minor-mode: t
  shell-dirtrack-mode: t
  global-hl-line-mode: t
  hl-line-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
o o f " C-p C-a <escape> SPC C-n C-n C-n C-c C-e C-p 
C-p C-e <escape> <backspace> <backspace> C-n <escape> 
b <escape> d <backspace> C-d C-d C-d C-d C-d C-d C-p 
C-p C-a <escape> SPC <escape> C-f C-c C-e C-p C-p C-a 
<escape> SPC C-n C-n C-n C-w C-y C-y C-p C-p C-p C-k 
C-k C-k C-k C-p C-e <backspace> <backspace> <backspace> 
<escape> C-b C-n C-e <escape> b <escape> b C-p C-b 
SPC i t e m SPC <escape> d f <backspace> 1 C-n <escape> 
b <backspace> i t e m SPC 2 <escape> d <escape> b C-b 
C-b C-b C-b C-b SPC C-p C-p C-p C-a <escape> SPC <escape> 
C-f C-c C-e C-p C-b : C-n C-a <escape> SPC C-n C-w 
C-y C-y <escape> b <escape> b <escape> b <escape> b 
C-p C-p C-n C-n - - s p a c e <escape> d <escape> d 
<escape> d C-n <escape> SPC C-p C-p C-e <backspace> 
<backspace> C-n C-n C-p C-b C-b <return> C-p C-p C-p 
C-e C-b <backspace> C-n C-e <backspace> C-n <backspace> 
C-n C-a <tab> C-e ) C-n <escape> SPC <escape> C-b C-c 
C-e C-p C-n C-n C-n C-n C-k C-k C-y C-n C-y C-n C-n 
<escape> SPC <escape> C-b C-c C-e C-n C-n C-n C-n C-e 
C-n C-b C-b C-b <backspace> 3 C-n C-n C-k C-k C-k C-k 
C-k C-k <return> <escape> SPC <escape> C-b C-c C-e 
<escape> SPC C-n C-n C-n C-n C-n C-n C-n C-w C-y C-p 
C-p C-p C-p C-p C-p C-p <tab> <escape> SPC <escape> 
C-f <escape> C-r C-p C-p C-p C-p C-p C-p C-b C-b C-b 
C-b <return> C-a C-p <escape> SPC <escape> C-f <escape> 
C-r C-u C-x TAB <escape> x r e p o r t - g n u - b 
<tab> <backspace> <backspace> <backspace> <backspace> 
<backspace> <tab> <return>

Recent messages:
Quit
Mark set [4 times]
Mark activated
Quit
Mark set [3 times]
Quit
Mark set
Quit
Mark set [2 times]
Mark activated [2 times]

Load-path shadows:
/users/dino/elisp/refill hides c:/emacs/lisp/textmodes/refill

Features:
(shadow sort mail-extr message ecomplete rfc822 mml mml-sec
password-cache mm-decode mm-bodies mm-encode mailabbrev nnheader
gnus-util netrc gmm-utils mailheader canlock sha1 hex-util hashcash
emacsbug newcomment dabbrev tabify cc-mode cc-fonts cc-menus cc-cmds
parse-time timezone dired-aux ansi-color multi-isearch finder-inf
time-stamp mail-utils url-cache url-http tls mail-parse rfc2231 rfc2047
rfc2045 qp ietf-drums time-date url-gw url-auth url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-util
url-parse url-vars mm-util mail-prsvr mailcap autorevert server
thesaurus recentf tree-widget synonyms-autoloads package lorem
cperl-mode smarter-compile js-mode-fixups jsshell-bundle jsshell
flyphpcs hideshow cc-styles cc-align cc-engine cc-vars cc-defs
flymake-cursor byte-opt warnings bytecomp byte-compile flymake compile
flymake-fixups dired-fixups dired regexp-opt defaultcontent thingatpt
csslint yasnippet dropdown-list derived easy-mmode help-mode view assoc
cl cl-19 powershell shell comint ring tfs skeleton edmacro kmacro
httpget hl-line advice help-fns advice-preload cus-edit easymenu
cus-start cus-load wid-edit tooltip ediff-hook vc-hooks lisp-float-type
mwheel dos-w32 disp-table ls-lisp w32-win w32-vars tool-bar dnd fontset
image fringe lisp-mode register page menu-bar rfn-eshadow timer select
scroll-bar mldrag mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev loaddefs button minibuffer faces cus-face files
text-properties overlay md5 base64 format env code-pages mule custom
widget hashtable-print-readable backquote make-network-process multi-tty
emacs)