help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: modify top level menu problem


From: Tim X
Subject: Re: modify top level menu problem
Date: Sat, 26 Feb 2011 11:37:26 +1100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

Tim X <address@hidden> writes:

> Hi all,
>
> hoping someone can help me with a problem I'm having when trying to add a new 
> item to a top level menu. The item is an action rather than another menu. I'm 
> doing this to fix some code that worked in emacs 21, but does not work in 
> emacs 23 (or emacs 22 I believe). I've tried to boil it down to a basic 
> recipe shown below. 
>
> I'm experimenting in the scratch buffer. This is in emacs 24.0.50 on Linux, 
> but the problem occurs under windows as well.
>
> ; a simple test action
> (defun tx-greet ()
>   (interactive) 
>   (message "Hello Tim!"))
>
> If I execute 
>
> (defun tx-menu ()
>   (interactive)
>   (define-key lisp-interaction-mode-map [menu-bar tx]
>     (cons "TX" (make-sparse-keymap)))
>   (define-key lisp-interaction-mode-map [menu-bar tx tx-test]
>     '(menu-item "TX Test" tx-greet)))
>
> I get a new menu item "TX" and clicking on that gives a sub-menu with one 
> item "TX Test". Clicking on this item and the message "Hello Tim!" appears in 
> the minibuffer. All works as expected. 
>
> However, if I just define the function as 
>
> (defun tx-menu ()
>   (interactive)
>   (define-key lisp-interaction-mode-map [menu-bar tx]
>     '(menu-item "TX Test" tx-greet)))
>
> I get the expected menu item at the top level, but clicking on it does 
> nothing - well, it grabs focus, the item is highlighted and you have to click 
> again to release focus. 
>
> So, what am I doing wrong? I've looked at menu-bar.el and I believe my code 
> is the same as other examples in that file which add a top level menu action 
> i.e. quit for the ns port etc. According to the manual, the definition looks 
> OK and presumably a similar definition use to work in emacs 21. I've checked 
> the NEWS files and cannot see anything which looks relevant. Can someone give 
> me some clues as at this point, I'm stumped!
>
> thanks,
>
> Tim

Just following up to myself. 

It now looks like the reason this code would not work is due to design
decisions within the GTK+ toolkit, which does not allow top-level menu
'actions' (i.e. buttons) only sub-menus. This is not a restriction with
either the Lucid toolkit or apparently on windows. 

If anyone is running emacs built with other toolkits, such as on
OXX/nextstep etc, it would be good to know/confirm if this type of
limitaiton also exists. Once I've done a little more confirmation, I
plan to log a request to have the manual updated to mention this
restriciton and it would be good to know which toolkits are affected. 

thanks

Tim

-- 
tcross (at) rapttech dot com dot au


reply via email to

[Prev in Thread] Current Thread [Next in Thread]