emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r109167: * lisp/term/x-win.el (x-menu


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r109167: * lisp/term/x-win.el (x-menu-bar-open): Use `frame-parameter'
Date: Fri, 20 Jul 2012 07:32:30 -0400
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 109167
author: Masatake YAMATO <address@hidden>
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Fri 2012-07-20 07:32:30 -0400
message:
  * lisp/term/x-win.el (x-menu-bar-open): Use `frame-parameter'
  to check whether menu-bar is shown or not.  If not shown,
  show the menu-bar as a popup menu instead of using tmm.
  * lisp/mouse.el (popup-menu): Accept `point' as `position' argument.
modified:
  lisp/ChangeLog
  lisp/mouse.el
  lisp/term/x-win.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-07-20 11:10:25 +0000
+++ b/lisp/ChangeLog    2012-07-20 11:32:30 +0000
@@ -1,3 +1,10 @@
+2012-07-20  Masatake YAMATO  <address@hidden>
+
+       * term/x-win.el (x-menu-bar-open): Use `frame-parameter'
+       to check whether menu-bar is shown or not.  If not shown,
+       show the menu-bar as a popup menu instead of using tmm.
+       * mouse.el (popup-menu): Accept `point' as `position' argument.
+
 2012-07-20  Dmitry Gutov  <address@hidden>
 
        * progmodes/ruby-mode.el (ruby-parse-partial): No error when end

=== modified file 'lisp/mouse.el'
--- a/lisp/mouse.el     2012-07-08 08:26:21 +0000
+++ b/lisp/mouse.el     2012-07-20 11:32:30 +0000
@@ -102,7 +102,8 @@
 MENU can be a keymap, an easymenu-style menu or a list of keymaps as for
 `x-popup-menu'.
 POSITION can be a click event or ((XOFFSET YOFFSET) WINDOW) and defaults to
-  the current mouse position.
+  the current mouse position. If POSITION is a symbol, `point' the current 
point
+position is used.
 PREFIX is the prefix argument (if any) to pass to the command."
   (let* ((map (cond
               ((keymapp menu) menu)
@@ -112,9 +113,17 @@
                                   (plist-get (get map 'menu-prop) :filter))))
                    (if filter (funcall filter (symbol-function map)) map)))))
         event cmd)
-    (unless position
-      (let ((mp (mouse-pixel-position)))
-       (setq position (list (list (cadr mp) (cddr mp)) (car mp)))))
+  (setq position
+       (cond
+        ((eq position 'point)
+         (let* ((pp (posn-at-point pos window))
+                 (xy (posn-x-y pp)))
+           (list (list (car xy) (cdr xy)) (posn-window pp))))
+        ((not position)
+         (let ((mp (mouse-pixel-position)))
+           (list (list (cadr mp) (cddr mp)) (car mp))))
+        (t
+         position)))
     ;; The looping behavior was taken from lmenu's popup-menu-popup
     (while (and map (setq event
                          ;; map could be a prefix key, in which case

=== modified file 'lisp/term/x-win.el'
--- a/lisp/term/x-win.el        2012-04-27 05:40:46 +0000
+++ b/lisp/term/x-win.el        2012-07-20 11:32:30 +0000
@@ -1305,12 +1305,18 @@
 (declare-function accelerate-menu "xmenu.c" (&optional frame) t)
 
 (defun x-menu-bar-open (&optional frame)
-  "Open the menu bar if `menu-bar-mode' is on, otherwise call `tmm-menubar'."
+  "Open the menu bar if it is shown.
+`popup-menu' is used if it is off "
   (interactive "i")
-  (if (and menu-bar-mode
-          (fboundp 'accelerate-menu))
-      (accelerate-menu frame)
-    (tmm-menubar)))
+  (cond
+   ((and (not (zerop (or (frame-parameter nil 'menu-bar-lines) 0)))
+        (fboundp 'accelerate-menu))
+    (accelerate-menu frame))
+   (t
+    (popup-menu (mouse-menu-bar-map)
+               (if (listp last-nonmenu-event)
+                   nil
+                 'point)))))
 
 
 ;;; Window system initialization.


reply via email to

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