aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGerd Möllmann2025-02-10 07:55:43 +0100
committerGerd Möllmann2025-02-18 05:13:16 +0100
commit17bf6b9efe5c40dfa92fa5ec64a99162304395cd (patch)
tree706803c28bb08443ec7bc214ae8d7550f7c93da3 /src
parenta51cfbbd15889ce2af59b0b1bffac8735f70f6b9 (diff)
downloademacs-17bf6b9efe5c40dfa92fa5ec64a99162304395cd.tar.gz
emacs-17bf6b9efe5c40dfa92fa5ec64a99162304395cd.zip
Add x-popup-menu-function
* src/menu.c (x_popup_menu_1): If non-nil call x-popup-menu-function. (syms_of_menu): DEFSYM x-popup-menu-function, DEFVAR_LISP it.
Diffstat (limited to 'src')
-rw-r--r--src/menu.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/menu.c b/src/menu.c
index 0293328c832..a37cb359623 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1111,6 +1111,12 @@ into menu items. */)
1111Lisp_Object 1111Lisp_Object
1112x_popup_menu_1 (Lisp_Object position, Lisp_Object menu) 1112x_popup_menu_1 (Lisp_Object position, Lisp_Object menu)
1113{ 1113{
1114 if (!NILP (Vx_popup_menu_function))
1115 return run_hook_with_args (3, ((Lisp_Object[]) {
1116 Qx_popup_menu_function, position,
1117 menu}),
1118 Ffuncall);
1119
1114 Lisp_Object keymap, tem, tem2 = Qnil; 1120 Lisp_Object keymap, tem, tem2 = Qnil;
1115 int xpos = 0, ypos = 0; 1121 int xpos = 0, ypos = 0;
1116 Lisp_Object title; 1122 Lisp_Object title;
@@ -1614,6 +1620,7 @@ syms_of_menu (void)
1614 1620
1615 DEFSYM (Qhide, "hide"); 1621 DEFSYM (Qhide, "hide");
1616 DEFSYM (Qx_pre_popup_menu_hook, "x-pre-popup-menu-hook"); 1622 DEFSYM (Qx_pre_popup_menu_hook, "x-pre-popup-menu-hook");
1623 DEFSYM (Qx_popup_menu_function, "x-popup-menu-function");
1617 1624
1618 DEFVAR_LISP ("x-pre-popup-menu-hook", Vx_pre_popup_menu_hook, 1625 DEFVAR_LISP ("x-pre-popup-menu-hook", Vx_pre_popup_menu_hook,
1619 doc: /* Hook run before `x-popup-menu' displays a popup menu. 1626 doc: /* Hook run before `x-popup-menu' displays a popup menu.
@@ -1622,6 +1629,11 @@ won't be run if `x-popup-menu' fails or returns for some other reason
1622(such as the keymap is invalid). */); 1629(such as the keymap is invalid). */);
1623 Vx_pre_popup_menu_hook = Qnil; 1630 Vx_pre_popup_menu_hook = Qnil;
1624 1631
1632 DEFVAR_LISP ("x-popup-menu-function", Vx_popup_menu_function,
1633 doc: /* Function to call to pop up a menu.
1634The function is called like `x-popup-menu'. */);
1635 Vx_popup_menu_function = Qnil;
1636
1625 defsubr (&Sx_popup_menu); 1637 defsubr (&Sx_popup_menu);
1626 defsubr (&Sx_popup_dialog); 1638 defsubr (&Sx_popup_dialog);
1627 defsubr (&Smenu_bar_menu_at_x_y); 1639 defsubr (&Smenu_bar_menu_at_x_y);