[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 9026990c668: Fix thumbnail update when thumb name is based on ima
From: |
Eli Zaretskii |
Subject: |
master 9026990c668: Fix thumbnail update when thumb name is based on image content |
Date: |
Fri, 4 Aug 2023 06:53:20 -0400 (EDT) |
branch: master
commit 9026990c6685e87c328f4fcc575ef644c2f5595a
Author: Manuel Giraud <manuel@ledu-giraud.fr>
Commit: Eli Zaretskii <eliz@gnu.org>
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)
---
lisp/image/image-dired-external.el | 3 ++-
lisp/image/image-dired-util.el | 17 +++++++++++++++++
lisp/image/image-dired.el | 2 +-
3 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/lisp/image/image-dired-external.el
b/lisp/image/image-dired-external.el
index 9f35e17a7e6..77352c25a3b 100644
--- a/lisp/image/image-dired-external.el
+++ b/lisp/image/image-dired-external.el
@@ -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))))))
diff --git a/lisp/image/image-dired-util.el b/lisp/image/image-dired-util.el
index 70911bce45a..53a5e274175 100644
--- a/lisp/image/image-dired-util.el
+++ b/lisp/image/image-dired-util.el
@@ -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"))
diff --git a/lisp/image/image-dired.el b/lisp/image/image-dired.el
index 98596510ec1..33beb5b3e49 100644
--- a/lisp/image/image-dired.el
+++ b/lisp/image/image-dired.el
@@ -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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 9026990c668: Fix thumbnail update when thumb name is based on image content,
Eli Zaretskii <=