Fix thumbnail update when thumb name is based on image content
* lisp/image/image-dired-util.el (image-dired-update-thumbnail-at-point): New function to update thumbnail when original image contents changed. * lisp/image/image-dired-external.el (image-dired-rotate-original): Use it. * lisp/image/image-dired.el (image-dired-display-thumbs): Fix spacing while here. (Bug#61394)
This commit is contained in:
parent
44d7fd3805
commit
9026990c66
3 changed files with 20 additions and 2 deletions
|
@ -405,7 +405,8 @@ The new file will be named THUMBNAIL-FILE."
|
|||
(not image-dired-rotate-original-ask-before-overwrite))
|
||||
(progn
|
||||
(copy-file image-dired-temp-rotate-image-file file t)
|
||||
(image-dired-refresh-thumb))
|
||||
(image-dired-refresh-thumb)
|
||||
(image-dired-update-thumbnail-at-point))
|
||||
(image-dired-display-image file))))))
|
||||
|
||||
|
||||
|
|
|
@ -190,6 +190,23 @@ Should be used by commands in `image-dired-thumbnail-mode'."
|
|||
"Return non-nil if there is an `image-dired' thumbnail at point."
|
||||
(get-text-property (point) 'image-dired-thumbnail))
|
||||
|
||||
(defun image-dired-update-thumbnail-at-point ()
|
||||
"Update the thumbnail at point if the original image file has been modified.
|
||||
This function uncaches and removes the thumbnail file under the old name."
|
||||
(when (image-dired-image-at-point-p)
|
||||
(let* ((file (image-dired-original-file-name))
|
||||
(thumb (expand-file-name (image-dired-thumb-name file)))
|
||||
(image (get-text-property (point) 'display)))
|
||||
(when image
|
||||
(let ((old-thumb (plist-get (cdr image) :file)))
|
||||
;; When 'image-dired-thumb-naming' is set to
|
||||
;; 'sha1-contents', 'thumb' and 'old-thumb' could be
|
||||
;; different file names. Update the thumbnail then.
|
||||
(unless (string= thumb old-thumb)
|
||||
(setf (plist-get (cdr image) :file) thumb)
|
||||
(clear-image-cache old-thumb)
|
||||
(delete-file old-thumb)))))))
|
||||
|
||||
(defun image-dired-window-width-pixels (window)
|
||||
"Calculate WINDOW width in pixels."
|
||||
(declare (obsolete window-body-width "29.1"))
|
||||
|
|
|
@ -590,7 +590,7 @@ used or not. If non-nil, use `display-buffer' instead of
|
|||
`image-dired-previous-line-and-display' where we do not want the
|
||||
thumbnail buffer to be selected."
|
||||
(interactive "P" nil dired-mode)
|
||||
(setq image-dired--generate-thumbs-start (current-time))
|
||||
(setq image-dired--generate-thumbs-start (current-time))
|
||||
(let ((buf (image-dired-create-thumbnail-buffer))
|
||||
files dired-buf)
|
||||
(if arg
|
||||
|
|
Loading…
Add table
Reference in a new issue