shr image zoom fixups
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 2 Feb 2012 09:32:42 +0000 (10:32 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 2 Feb 2012 09:32:42 +0000 (10:32 +0100)
* shr.el (shr-put-image): Remove underlines from sliced images.
(shr-zoom-image): Compute the region to be replaced more correctly.

lisp/ChangeLog
lisp/shr.el

index 7255fe9..d94f352 100644 (file)
@@ -1,3 +1,8 @@
+2012-02-02  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * shr.el (shr-put-image): Remove underlines from sliced images.
+       (shr-zoom-image): Compute the region to be replaced more correctly.
+
 2012-02-02  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * gnus-msg.el (gnus-gcc-self-resent-messages): New user option.
index 5a04591..83392cd 100644 (file)
@@ -226,17 +226,16 @@ size, and full-buffer size."
     (if (not url)
        (message "No image under point")
       ;; Delete the old picture.
-      (beginning-of-line)
-      (while (get-text-property (point) 'display)
-       (forward-line -1))
-      (forward-line 1)
+      (while (get-text-property (point) 'image-url)
+       (forward-char -1))
+      (forward-char 1)
       (let ((start (point)))
-       (while (get-text-property (point) 'display)
-         (forward-line 1))
-       (forward-line -1)
-       (delete-region start (point))
-       (forward-char 1)
-       (put-text-property start (point) 'display nil))
+       (while (get-text-property (point) 'image-url)
+         (forward-char 1))
+       (forward-char -1)
+       (put-text-property start (point) 'display nil)
+       (when (> (- (point) start) 2)
+         (delete-region start (1- (point)))))
       (message "Inserting %s..." url)
       (url-retrieve url 'shr-image-fetched
                    (list (current-buffer) (1- (point)) (point-marker)
@@ -547,10 +546,16 @@ size, and full-buffer size."
         (with-current-buffer buffer
          (save-excursion
            (let ((alt (buffer-substring start end))
+                 (properties (text-properties-at start))
                  (inhibit-read-only t))
              (delete-region start end)
              (goto-char start)
-             (funcall shr-put-image-function data alt flags)))))))
+             (funcall shr-put-image-function data alt flags)
+             (while properties
+               (let ((type (pop properties))
+                     (value (pop properties)))
+                 (unless (memq type '(display image-size))
+                   (put-text-property start (point) type value))))))))))
   (kill-buffer (current-buffer)))
 
 (defun shr-put-image (data alt &optional flags)
@@ -574,7 +579,10 @@ size, and full-buffer size."
                     (> (car (image-size image t)) 400))
            (insert "\n"))
          (if (eq size 'original)
-             (insert-sliced-image image (or alt "*") nil 20 1)
+             (let ((overlays (overlays-at (point))))
+               (insert-sliced-image image (or alt "*") nil 20 1)
+               (dolist (overlay overlays)
+                 (overlay-put overlay 'face 'default)))
            (insert-image image (or alt "*")))
          (put-text-property start (point) 'image-size size)
          (when (image-animated-p image)