From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: David Reitter Newsgroups: gmane.emacs.devel Subject: Re: menu-bar: disable items when no frame visible Date: Thu, 10 Nov 2005 21:12:19 +0000 Message-ID: <069BF3EB-C5E4-4042-91E9-0DFB37C58E99@gmail.com> References: <708F3D2D-A87C-4F80-BC27-171D82653F4D@gmail.com> NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 (Apple Message framework v746.2) Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Content-Transfer-Encoding: quoted-printable X-Trace: sea.gmane.org 1131657287 31443 80.91.229.2 (10 Nov 2005 21:14:47 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Thu, 10 Nov 2005 21:14:47 +0000 (UTC) Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Nov 10 22:14:43 2005 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1EaJjK-0006R1-5p for ged-emacs-devel@m.gmane.org; Thu, 10 Nov 2005 22:13:10 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1EaJjJ-0000vB-E2 for ged-emacs-devel@m.gmane.org; Thu, 10 Nov 2005 16:13:09 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1EaJic-0000lF-O6 for emacs-devel@gnu.org; Thu, 10 Nov 2005 16:12:26 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1EaJib-0000ko-Af for emacs-devel@gnu.org; Thu, 10 Nov 2005 16:12:26 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1EaJib-0000kk-5j for emacs-devel@gnu.org; Thu, 10 Nov 2005 16:12:25 -0500 Original-Received: from [64.233.162.203] (helo=zproxy.gmail.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1EaJia-0008It-Vm for emacs-devel@gnu.org; Thu, 10 Nov 2005 16:12:25 -0500 Original-Received: by zproxy.gmail.com with SMTP id j2so513284nzf for ; Thu, 10 Nov 2005 13:12:24 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:mime-version:in-reply-to:references:content-type:message-id:content-transfer-encoding:from:subject:date:to:x-mailer; b=hLNhA39zBXlom/4qcsYMR4YVSEWl7T5qvmNLivFfxOR3huRWSfo6fkLhIQeneKG2AQh/LnNb4tOzszXeW69JSY3FtwT4it9CAUH7yYnaTrXuPprgNCj60kcDPPmRhA9LaxNgpHZ6IQwJkFQ/DyWU+Jbb0R9yMuH/P5MtAbE+GzA= Original-Received: by 10.64.196.10 with SMTP id t10mr59225qbf; Thu, 10 Nov 2005 13:12:24 -0800 (PST) Original-Received: from ?129.215.174.81? ( [129.215.174.81]) by mx.gmail.com with ESMTP id e17sm428021qbe.2005.11.10.13.12.20; Thu, 10 Nov 2005 13:12:23 -0800 (PST) In-Reply-To: Original-To: Emacs-Devel ' X-Mailer: Apple Mail (2.746.2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:45700 Archived-At: On 10 Nov 2005, at 16:03, David Reitter wrote: > This patch ensures that menu items are disabled when they should =20 > be, i.e. when there is no applicable visible and non-iconified frame. > In a lot of cases, one could do "insert file" or choose stuff from =20 > the "search" menu even if there were only iconified or hidden frames. Here's the patch again, this time not as attachment for your =20 convenience. (If any lines were wrapped, please use the previous attachment to =20 apply.) Index: menu-bar.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/emacs/emacs/lisp/menu-bar.el,v retrieving revision 1.278 diff -c -r1.278 menu-bar.el *** menu-bar.el 1 Nov 2005 23:21:39 -0000 1.278 --- menu-bar.el 10 Nov 2005 16:02:35 -0000 *************** *** 172,177 **** --- 172,178 ---- '(menu-item "Save" save-buffer :enable (and (buffer-modified-p) (buffer-file-name) + (menu-bar-menu-frame-live-and-visible-p) (menu-bar-non-minibuffer-window-p)) :help "Save current buffer to its file")) *************** *** 184,190 **** :help "Discard (kill) current buffer")) (define-key menu-bar-file-menu [insert-file] '(menu-item "Insert File..." insert-file ! :enable (menu-bar-non-minibuffer-window-p) :help "Insert another file into current buffer")) (define-key menu-bar-file-menu [dired] '(menu-item "Open Directory..." dired --- 185,192 ---- :help "Discard (kill) current buffer")) (define-key menu-bar-file-menu [insert-file] '(menu-item "Insert File..." insert-file ! :enable (and (menu-bar-non-minibuffer-window-p) ! (menu-bar-menu-frame-live-and-visible-p)) :help "Insert another file into current buffer")) (define-key menu-bar-file-menu [dired] '(menu-item "Open Directory..." dired *************** *** 192,202 **** :help "Read a directory, to operate on its files")) (define-key menu-bar-file-menu [open-file] '(menu-item "Open File..." find-file-existing ! :enable (menu-bar-non-minibuffer-window-p) :help "Read an existing file into an Emacs buffer")) (define-key menu-bar-file-menu [new-file] '(menu-item "Visit New File..." find-file ! :enable (menu-bar-non-minibuffer-window-p) :help "Specify a new file's name, to edit the file")) =0C --- 194,206 ---- :help "Read a directory, to operate on its files")) (define-key menu-bar-file-menu [open-file] '(menu-item "Open File..." find-file-existing ! :enable (or enable-recursive-minibuffers ! (menu-bar-non-minibuffer-window-p)) :help "Read an existing file into an Emacs buffer")) (define-key menu-bar-file-menu [new-file] '(menu-item "Visit New File..." find-file ! :enable (or enable-recursive-minibuffers ! (menu-bar-non-minibuffer-window-p)) :help "Specify a new file's name, to edit the file")) =0C *************** *** 359,364 **** --- 363,369 ---- ;;; Assemble the top-level Edit menu items. (define-key menu-bar-edit-menu [props] '(menu-item "Text Properties" facemenu-menu + :enable (menu-bar-menu-frame-live-and-visible-p) :help "Change properties of text in region")) (define-key menu-bar-edit-menu [fill] *************** *** 371,377 **** '(menu-item "--")) (define-key menu-bar-edit-menu [bookmark] ! '(menu-item "Bookmarks" menu-bar-bookmark-map :help "Record positions and jump between them")) (defvar menu-bar-goto-menu (make-sparse-keymap "Go To")) --- 376,382 ---- '(menu-item "--")) (define-key menu-bar-edit-menu [bookmark] ! `(menu-item "Bookmarks" ,menu-bar-bookmark-map :help "Record positions and jump between them")) (defvar menu-bar-goto-menu (make-sparse-keymap "Go To")) *************** *** 431,449 **** :help "Read a line number and go to that line")) (define-key menu-bar-edit-menu [goto] ! (list 'menu-item "Go To" menu-bar-goto-menu)) (define-key menu-bar-edit-menu [replace] ! (list 'menu-item "Replace" menu-bar-replace-menu)) (define-key menu-bar-edit-menu [search] ! (list 'menu-item "Search" menu-bar-search-menu)) (define-key menu-bar-edit-menu [separator-search] '(menu-item "--")) (define-key menu-bar-edit-menu [mark-whole-buffer] '(menu-item "Select All" mark-whole-buffer :help "Mark the whole buffer for a subsequent cut/copy.")) (define-key menu-bar-edit-menu [clear] '(menu-item "Clear" delete-region --- 436,458 ---- :help "Read a line number and go to that line")) (define-key menu-bar-edit-menu [goto] ! `(menu-item "Go To" ,menu-bar-goto-menu ! :enable (menu-bar-menu-frame-live-and-visible-p))) (define-key menu-bar-edit-menu [replace] ! `(menu-item "Replace" ,menu-bar-replace-menu ! :enable (menu-bar-menu-frame-live-and-visible-p))) (define-key menu-bar-edit-menu [search] ! `(menu-item "Search" ,menu-bar-search-menu ! :enable (menu-bar-menu-frame-live-and-visible-p))) (define-key menu-bar-edit-menu [separator-search] '(menu-item "--")) (define-key menu-bar-edit-menu [mark-whole-buffer] '(menu-item "Select All" mark-whole-buffer + :enable (menu-bar-menu-frame-live-and-visible-p) :help "Mark the whole buffer for a subsequent cut/copy.")) (define-key menu-bar-edit-menu [clear] '(menu-item "Clear" delete-region *************** *** 456,462 **** (fset 'yank-menu (cons 'keymap yank-menu)) (define-key menu-bar-edit-menu [select-paste] '(menu-item "Select and Paste" yank-menu ! :enable (and (cdr yank-menu) (not buffer-read-only)) :help "Paste (yank) text cut or copied earlier")) (define-key menu-bar-edit-menu [paste] '(menu-item "Paste" yank --- 465,473 ---- (fset 'yank-menu (cons 'keymap yank-menu)) (define-key menu-bar-edit-menu [select-paste] '(menu-item "Select and Paste" yank-menu ! :enable (and (cdr yank-menu) ! (not buffer-read-only) ! (menu-bar-menu-frame-live-and-visible-p)) :help "Paste (yank) text cut or copied earlier")) (define-key menu-bar-edit-menu [paste] '(menu-item "Paste" yank *************** *** 464,470 **** ;; Emacs compiled --without-x doesn't have ;; x-selection-exists-p. (fboundp 'x-selection-exists-p) ! (x-selection-exists-p) (not buffer-read-only)) :help "Paste (yank) text most recently cut/copied")) (define-key menu-bar-edit-menu [copy] '(menu-item "Copy" menu-bar-kill-ring-save --- 475,482 ---- ;; Emacs compiled --without-x doesn't have ;; x-selection-exists-p. (fboundp 'x-selection-exists-p) ! (x-selection-exists-p) (not buffer-read-only) ! (menu-bar-menu-frame-live-and-visible-p)) :help "Paste (yank) text most recently cut/copied")) (define-key menu-bar-edit-menu [copy] '(menu-item "Copy" menu-bar-kill-ring-save *************** *** 479,484 **** --- 491,497 ---- (define-key menu-bar-edit-menu [undo] '(menu-item "Undo" undo :enable (and (not buffer-read-only) + (menu-bar-menu-frame-live-and-visible-p) (not (eq t buffer-undo-list)) (if (eq last-command 'undo) pending-undo-list *************** *** 1427,1433 **** (let ((menu-frame (if (display-multi-frame-p) menu-updating-frame (selected-frame)))) (and (frame-live-p menu-frame) ! (frame-visible-p menu-frame)))) (defun menu-bar-non-minibuffer-window-p () "Return non-nil if selected window of the menu frame is not a =20 minibuf window. --- 1440,1447 ---- (let ((menu-frame (if (display-multi-frame-p) menu-updating-frame (selected-frame)))) (and (frame-live-p menu-frame) ! ;; not icon ! (eq (frame-visible-p menu-frame) t)))) (defun menu-bar-non-minibuffer-window-p () "Return non-nil if selected window of the menu frame is not a =20 minibuf window. *************** *** 1451,1456 **** --- 1465,1471 ---- (setq count (1+ count))) (setq buffers (cdr buffers))) (and (menu-bar-non-minibuffer-window-p) + (menu-bar-menu-frame-live-and-visible-p) (> count 1)))) (put 'dired 'menu-enable '(menu-bar-non-minibuffer-window-p))