emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 1805b4c: * lisp/image.el: Mouse-wheel scaling on images (bug#3818


From: Juri Linkov
Subject: master 1805b4c: * lisp/image.el: Mouse-wheel scaling on images (bug#38187)
Date: Wed, 20 Nov 2019 18:00:00 -0500 (EST)

branch: master
commit 1805b4cc08c8f9668f0f43f5b157d91b9c757e88
Author: Juri Linkov <address@hidden>
Commit: Juri Linkov <address@hidden>

    * lisp/image.el: Mouse-wheel scaling on images (bug#38187)
    
    * lisp/image.el (image-mouse-increase-size)
    (image-mouse-decrease-size): New commands.
    (image-map): Bind C-wheel-down and C-mouse-5 to
    image-mouse-decrease-size, C-wheel-up and C-mouse-4 to
    image-mouse-increase-size.
---
 lisp/image.el | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/lisp/image.el b/lisp/image.el
index 5f24475..e0965c1 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -158,6 +158,10 @@ or \"ffmpeg\") is installed."
   (let ((map (make-sparse-keymap)))
     (define-key map "-" 'image-decrease-size)
     (define-key map "+" 'image-increase-size)
+    (define-key map [C-wheel-down] 'image-mouse-decrease-size)
+    (define-key map [C-mouse-5]    'image-mouse-decrease-size)
+    (define-key map [C-wheel-up]   'image-mouse-increase-size)
+    (define-key map [C-mouse-4]    'image-mouse-increase-size)
     (define-key map "r" 'image-rotate)
     (define-key map "o" 'image-save)
     map))
@@ -1007,24 +1011,40 @@ has no effect."
 
 (imagemagick-register-types)
 
-(defun image-increase-size (n)
+(defun image-increase-size (&optional n)
   "Increase the image size by a factor of N.
 If N is 3, then the image size will be increased by 30%.  The
 default is 20%."
   (interactive "P")
   (image--change-size (if n
-                          (1+ (/ n 10.0))
+                          (1+ (/ (prefix-numeric-value n) 10.0))
                         1.2)))
 
-(defun image-decrease-size (n)
+(defun image-decrease-size (&optional n)
   "Decrease the image size by a factor of N.
 If N is 3, then the image size will be decreased by 30%.  The
 default is 20%."
   (interactive "P")
   (image--change-size (if n
-                          (- 1 (/ n 10.0))
+                          (- 1 (/ (prefix-numeric-value n) 10.0))
                         0.8)))
 
+(defun image-mouse-increase-size (&optional event)
+  "Increase the image size using the mouse."
+  (interactive "e")
+  (when (listp event)
+    (save-window-excursion
+      (posn-set-point (event-start event))
+      (image-increase-size))))
+
+(defun image-mouse-decrease-size (&optional event)
+  "Decrease the image size using the mouse."
+  (interactive "e")
+  (when (listp event)
+    (save-window-excursion
+      (posn-set-point (event-start event))
+      (image-decrease-size))))
+
 (defun image--get-image ()
   "Return the image at point."
   (let ((image (get-char-property (point) 'display)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]