]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug #1077 with popping new frames from a minibuffer-only frame.
authorEli Zaretskii <eliz@gnu.org>
Thu, 9 Dec 2010 19:07:53 +0000 (21:07 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 9 Dec 2010 19:07:53 +0000 (21:07 +0200)
 menu-bar.el (menu-bar-frame-for-menubar, menu-bar-positive-p):
 New functions.
 (menu-bar-showhide-menu) <menu-bar-mode, showhide-tool-bar>: Use
 them instead of `nil' and `>', respectively.
 (menu-bar-showhide-tool-bar-menu): Use menu-bar-frame-for-menubar
 instead of `nil'.
 (toggle-menu-bar-mode-from-frame): Use menu-bar-frame-for-menubar
 and menu-bar-positive-p instead of `nil' and `>', respectively.

lisp/ChangeLog
lisp/menu-bar.el

index 49e4f1a9d049c3ec84754ff2f4544e94c296101a..cb3846c6f46ce3febcf8db45a3bb97da4c38af78 100644 (file)
@@ -1,3 +1,15 @@
+2010-12-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * menu-bar.el (menu-bar-frame-for-menubar, menu-bar-positive-p):
+       New functions.
+       (menu-bar-showhide-menu) <menu-bar-mode, showhide-tool-bar>: Use
+       them instead of `nil' and `>', respectively.
+       (menu-bar-showhide-tool-bar-menu): Use menu-bar-frame-for-menubar
+       instead of `nil'.
+       (toggle-menu-bar-mode-from-frame): Use menu-bar-frame-for-menubar
+       and menu-bar-positive-p instead of `nil' and `>', respectively.
+       (Bug#1077)
+
 2010-12-09  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
        * whitespace.el (whitespace-newline-mode): Code fix.
index a3a28c3dcfc97b789450608681c8834831dcd74f..4708c52e12ede51a44a92ada025e49462892548d 100644 (file)
@@ -1020,10 +1020,24 @@ mail status in mode line"))
              :visible (and (display-graphic-p) (fboundp 'x-show-tip))
              :button (:toggle . tooltip-mode)))
 
+(defun menu-bar-frame-for-menubar ()
+  "Return the frame suitable for updating the menu bar."
+  (or (and (framep menu-updating-frame)
+          menu-updating-frame)
+      (selected-frame)))
+
+(defun menu-bar-positive-p (val)
+  "Return non-nil iff VAL is a positive number."
+  (and (numberp val)
+       (> val 0)))
+
 (define-key menu-bar-showhide-menu [menu-bar-mode]
   `(menu-item ,(purecopy "Menu-bar") toggle-menu-bar-mode-from-frame
              :help ,(purecopy "Turn menu-bar on/off")
-             :button (:toggle . (> (frame-parameter nil 'menu-bar-lines) 0))))
+             :button
+             (:toggle . (menu-bar-positive-p
+                         (frame-parameter (menu-bar-frame-for-menubar)
+                                          'menu-bar-lines)))))
 
 (defun menu-bar-set-tool-bar-position (position)
   (customize-set-variable 'tool-bar-mode t)
@@ -1060,7 +1074,9 @@ mail status in mode line"))
                    :visible (display-graphic-p)
                    :button
                    (:radio . (and tool-bar-mode
-                                  (eq (frame-parameter nil 'tool-bar-position)
+                                  (eq (frame-parameter
+                                       (menu-bar-frame-for-menubar)
+                                       'tool-bar-position)
                                       'left)))))
 
       (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-right]
@@ -1070,7 +1086,9 @@ mail status in mode line"))
                    :visible (display-graphic-p)
                    :button
                    (:radio . (and tool-bar-mode
-                                  (eq (frame-parameter nil 'tool-bar-position)
+                                  (eq (frame-parameter
+                                       (menu-bar-frame-for-menubar)
+                                       'tool-bar-position)
                                       'right)))))
 
       (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-bottom]
@@ -1080,7 +1098,9 @@ mail status in mode line"))
                    :visible (display-graphic-p)
                    :button
                    (:radio . (and tool-bar-mode
-                                  (eq (frame-parameter nil 'tool-bar-position)
+                                  (eq (frame-parameter
+                                       (menu-bar-frame-for-menubar)
+                                       'tool-bar-position)
                                       'bottom)))))
 
       (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-top]
@@ -1090,7 +1110,9 @@ mail status in mode line"))
                    :visible (display-graphic-p)
                    :button
                    (:radio . (and tool-bar-mode
-                                  (eq (frame-parameter nil 'tool-bar-position)
+                                  (eq (frame-parameter
+                                       (menu-bar-frame-for-menubar)
+                                       'tool-bar-position)
                                       'top)))))
 
       (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-none]
@@ -1110,8 +1132,10 @@ mail status in mode line"))
     `(menu-item ,(purecopy "Tool-bar") toggle-tool-bar-mode-from-frame
                :help ,(purecopy "Turn tool-bar on/off")
                :visible (display-graphic-p)
-               :button (:toggle . (> (frame-parameter nil 'tool-bar-lines) 0))))
-)
+               :button
+               (:toggle . (menu-bar-positive-p
+                           (frame-parameter (menu-bar-frame-for-menubar)
+                                            'tool-bar-lines))))))
 
 (define-key menu-bar-options-menu [showhide]
   `(menu-item ,(purecopy "Show/Hide") ,menu-bar-showhide-menu))
@@ -2109,7 +2133,10 @@ turn on menu bars; otherwise, turn off menu bars."
 See `menu-bar-mode' for more information."
   (interactive (list (or current-prefix-arg 'toggle)))
   (if (eq arg 'toggle)
-      (menu-bar-mode (if (> (frame-parameter nil 'menu-bar-lines) 0) 0 1))
+      (menu-bar-mode
+       (if (menu-bar-positive-p
+           (frame-parameter (menu-bar-frame-for-menubar) 'menu-bar-lines))
+           0 1))
     (menu-bar-mode arg)))
 
 (declare-function x-menu-bar-open "term/x-win" (&optional frame))