From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Drew Adams" Newsgroups: gmane.emacs.bugs Subject: bug#7730: 24.0.50; `image-mode-fit-frame': add optional FRAME arg Date: Fri, 24 Dec 2010 15:45:05 -0800 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1293234808 23809 80.91.229.12 (24 Dec 2010 23:53:28 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 24 Dec 2010 23:53:28 +0000 (UTC) To: 7730@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Dec 25 00:53:21 2010 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1PWHRl-0004Tq-8H for geb-bug-gnu-emacs@m.gmane.org; Sat, 25 Dec 2010 00:53:17 +0100 Original-Received: from localhost ([127.0.0.1]:41728 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PWHRk-0003FD-RV for geb-bug-gnu-emacs@m.gmane.org; Fri, 24 Dec 2010 18:53:16 -0500 Original-Received: from [140.186.70.92] (port=41805 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PWHRe-0003F4-Bi for bug-gnu-emacs@gnu.org; Fri, 24 Dec 2010 18:53:11 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PWHRd-0007Pm-73 for bug-gnu-emacs@gnu.org; Fri, 24 Dec 2010 18:53:10 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:40250) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PWHRd-0007Pi-5b for bug-gnu-emacs@gnu.org; Fri, 24 Dec 2010 18:53:09 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1PWHEw-0003Ki-KA; Fri, 24 Dec 2010 18:40:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: "Drew Adams" Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 24 Dec 2010 23:40:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 7730 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: Original-Received: via spool by submit@debbugs.gnu.org id=B.129323398312779 (code B ref -1); Fri, 24 Dec 2010 23:40:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 24 Dec 2010 23:39:43 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PWHEc-0003K4-MI for submit@debbugs.gnu.org; Fri, 24 Dec 2010 18:39:42 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PWHEa-0003Jr-BJ for submit@debbugs.gnu.org; Fri, 24 Dec 2010 18:39:41 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PWHL2-0006FE-He for submit@debbugs.gnu.org; Fri, 24 Dec 2010 18:46:21 -0500 Original-Received: from lists.gnu.org ([199.232.76.165]:46099) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PWHL2-0006F8-DK for submit@debbugs.gnu.org; Fri, 24 Dec 2010 18:46:20 -0500 Original-Received: from [140.186.70.92] (port=48503 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PWHL1-00028Q-K5 for bug-gnu-emacs@gnu.org; Fri, 24 Dec 2010 18:46:20 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PWHL0-0006Eq-A9 for bug-gnu-emacs@gnu.org; Fri, 24 Dec 2010 18:46:19 -0500 Original-Received: from rcsinet10.oracle.com ([148.87.113.121]:46408) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PWHL0-0006Eb-3p for bug-gnu-emacs@gnu.org; Fri, 24 Dec 2010 18:46:18 -0500 Original-Received: from rcsinet13.oracle.com (rcsinet13.oracle.com [148.87.113.125]) by rcsinet10.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id oBONkFXW000624 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 24 Dec 2010 23:46:17 GMT Original-Received: from acsmt353.oracle.com (acsmt353.oracle.com [141.146.40.153]) by rcsinet13.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id oBONkFMT011300 for ; Fri, 24 Dec 2010 23:46:15 GMT Original-Received: from abhmt015.oracle.com by acsmt355.oracle.com with ESMTP id 904846601293234306; Fri, 24 Dec 2010 15:45:06 -0800 Original-Received: from dradamslap1 (/10.159.220.18) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 24 Dec 2010 15:45:06 -0800 X-Mailer: Microsoft Office Outlook 11 Thread-Index: AcujxJb7VYCS5a0BSCGKNoogW2YNcg== X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5994 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Fri, 24 Dec 2010 18:40:02 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:42821 Archived-At: Here's a possible enhancement to `image-mode-fit-frame'. These are the differences: 1. Added an optional FRAME arg. 2. The command only toggles if called interactively (actually, if the first arg is non-nil). #1 means you can use it for another frame. #2 means that only interactive calls save the previous frame size and alternate between fitting and restoring the old size. Also, at the end of the function I changed the separate calls to `set-frame-width' and `set-frame-height' to a single call to `set-frame-size'. I did that because I was seeing that the frame was not getting resized to fit in some cases. Dunno if there is a bug associated with that. FWIW, in my own use of this, my general command `fit-frame' calls it for Emacs 23+ if the FRAME is in `image-mode' or `image-minor-mode': (if (and (fboundp 'image-mode-fit-frame) ; Emacs 23+ (if (or (null frame) (eq frame (selected-frame))) (or (eq major-mode 'image-mode) image-minor-mode) (save-window-excursion (select-frame frame) (or (eq major-mode 'image-mode) image-minor-mode)))) (fit-frame-to-image (interactive-p) frame) ...) (I also use a different name for the command.) (defun fit-frame-to-image (interactivep &optional frame) "Fit FRAME to the current image. If FRAME is not the selected frame, fit it to its first image. Interactively, if frame has already been fit to the image, then restore the size from before it was fit. This function assumes that FRAME has only one window." ;; FIXME: This does not take into account decorations ;; like mode-line, minibuffer, header-line, ... (interactive "p") (let* ((saved (frame-parameter frame 'image-mode-saved-size)) (display (if (or (null frame) (equal frame (selected-frame))) (image-get-display-property) (save-selected-window (select-frame frame) (image-get-display-property)))) (size (image-display-size display nil frame))) (setq frame (or frame (selected-frame))) (if (and interactivep saved (eq (caar saved) (frame-width frame)) (eq (cdar saved) (frame-height frame))) (progn ; Restore previous size, before it was fit. (set-frame-parameter frame 'image-mode-saved-size nil) (setq size (cdr saved))) ;; Round up size, and save current size so we can toggle back to it. (setcar size (ceiling (car size))) (setcdr size (ceiling (cdr size))) (set-frame-parameter frame 'image-mode-saved-size (cons size (cons (frame-width frame) (frame-height frame))))) (set-frame-size frame (car size) (cdr size)))) In GNU Emacs 24.0.50.1 (i386-mingw-nt5.1.2600) of 2010-12-20 on 3249CTO Windowing system distributor `Microsoft Corp.', version 5.1.2600 configured using `configure --with-gcc (4.4) --no-opt --cflags -Ic:/imagesupport/include'