diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2008-04-03 02:19:23 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2008-04-03 02:19:23 +0000 |
commit | bd1d6a63fcf01daeec366af4628d4de049e0e36b (patch) | |
tree | a133e7e36fba2ff6d07e98f493e51a07a3479806 /lisp/image-mode.el | |
parent | d34c311ab4d865e0bbfd0d9c81719580f8bdacf4 (diff) | |
download | emacs-bd1d6a63fcf01daeec366af4628d4de049e0e36b.tar.gz |
(image-mode-fit-frame): New command.
Diffstat (limited to 'lisp/image-mode.el')
-rw-r--r-- | lisp/image-mode.el | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lisp/image-mode.el b/lisp/image-mode.el index fc38f045ff9..2fe1cdc88e6 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el @@ -244,6 +244,31 @@ stopping if the top or bottom edge of the image is reached." (image-set-window-hscroll (max 0 (- img-width win-width))) (image-set-window-vscroll (max 0 (- img-height win-height))))) +;; Adjust frame and image size. + +(defun image-mode-fit-frame () + "Fit the frame to the current image. +This function assumes the current frame has only one window." + ;; FIXME: This does not take into account decorations like mode-line, + ;; minibuffer, header-line, ... + (interactive) + (let* ((saved (frame-parameter nil 'image-mode-saved-size)) + (display (image-get-display-property)) + (size (image-size display))) + (if (and saved + (eq (caar saved) (frame-width)) + (eq (cdar saved) (frame-height))) + (progn ;; Toggle back to previous non-fitted size. + (set-frame-parameter nil '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 nil 'image-mode-saved-size + (cons size (cons (frame-width) (frame-height))))) + (set-frame-width (selected-frame) (car size)) + (set-frame-height (selected-frame) (cdr size)))) + ;;; Image Mode setup (defvar image-type nil |