Sort items in tmm properly, and allow clicking the final item
* lisp/tmm.el (tmm-menubar-keymap): Sort the final items properly. (tmm-menubar): Allow clicking the final menu item (bug#43756).
This commit is contained in:
parent
7301bf996e
commit
c47479cf17
2 changed files with 18 additions and 9 deletions
24
lisp/tmm.el
24
lisp/tmm.el
|
@ -50,14 +50,19 @@ The ordering of the return value respects `menu-bar-final-items'."
|
|||
(menu-end '()))
|
||||
(map-keymap
|
||||
(lambda (key binding)
|
||||
(push (cons key binding)
|
||||
;; If KEY is the name of an item that we want to put last,
|
||||
;; move it to the end.
|
||||
(if (memq key menu-bar-final-items)
|
||||
menu-end
|
||||
menu-bar)))
|
||||
(let ((pos (seq-position menu-bar-final-items key))
|
||||
(menu-item (cons key binding)))
|
||||
(if pos
|
||||
;; If KEY is the name of an item that we want to put
|
||||
;; last, store it separately with explicit ordering for
|
||||
;; sorting.
|
||||
(push (cons pos menu-item) menu-end)
|
||||
(push menu-item menu-bar))))
|
||||
(tmm-get-keybind [menu-bar]))
|
||||
`(keymap ,@(nreverse menu-bar) ,@(nreverse menu-end))))
|
||||
`(keymap ,@(nreverse menu-bar)
|
||||
,@(mapcar #'cdr (sort menu-end
|
||||
(lambda (a b)
|
||||
(< (car a) (car b))))))))
|
||||
|
||||
;;;###autoload (define-key global-map "\M-`" 'tmm-menubar)
|
||||
;;;###autoload (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
|
||||
|
@ -96,7 +101,10 @@ to invoke `tmm-menubar' instead, customize the variable
|
|||
(or (null visible)
|
||||
(eval visible)))))))
|
||||
(setq column (+ column (length name) 1)))))
|
||||
menu-bar))))
|
||||
menu-bar)
|
||||
;; Check the last menu item.
|
||||
(when (> column x-position)
|
||||
(setq menu-bar-item prev-key)))))
|
||||
(tmm-prompt menu-bar nil menu-bar-item)))
|
||||
|
||||
;;;###autoload
|
||||
|
|
|
@ -12106,7 +12106,8 @@ See also `pre-command-hook'. */);
|
|||
|
||||
DEFVAR_LISP ("menu-bar-final-items", Vmenu_bar_final_items,
|
||||
doc: /* List of menu bar items to move to the end of the menu bar.
|
||||
The elements of the list are event types that may have menu bar bindings. */);
|
||||
The elements of the list are event types that may have menu bar
|
||||
bindings. The order of this list controls the order of the items. */);
|
||||
Vmenu_bar_final_items = Qnil;
|
||||
|
||||
DEFVAR_LISP ("tab-bar-separator-image-expression", Vtab_bar_separator_image_expression,
|
||||
|
|
Loading…
Add table
Reference in a new issue