summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/pdf-view.el23
1 files changed, 17 insertions, 6 deletions
diff --git a/lisp/pdf-view.el b/lisp/pdf-view.el
index d7adb48..7de1888 100644
--- a/lisp/pdf-view.el
+++ b/lisp/pdf-view.el
@@ -257,6 +257,10 @@ regarding display of the region in the later function.")
`(unless (pdf-view-active-region-p)
(error "The region is not active")))
+(defconst pdf-view-have-image-mode-pixel-vscroll
+ (>= emacs-major-version 27)
+ "Whether image-mode scrolls vertically by pixels.")
+
;; * ================================================================== *
;; * Major Mode
@@ -716,7 +720,8 @@ next page only on typing SPC (ARG is nil)."
(if (or pdf-view-continuous (null arg))
(let ((hscroll (window-hscroll))
(cur-page (pdf-view-current-page)))
- (when (or (= (window-vscroll) (image-scroll-up arg))
+ (when (or (= (window-vscroll nil pdf-view-have-image-mode-pixel-vscroll)
+ (image-scroll-up arg))
;; Workaround rounding/off-by-one issues.
(memq pdf-view-display-size
'(fit-height fit-page)))
@@ -737,7 +742,8 @@ to previous page only on typing DEL (ARG is nil)."
(if (or pdf-view-continuous (null arg))
(let ((hscroll (window-hscroll))
(cur-page (pdf-view-current-page)))
- (when (or (= (window-vscroll) (image-scroll-down arg))
+ (when (or (= (window-vscroll nil pdf-view-have-image-mode-pixel-vscroll)
+ (image-scroll-down arg))
;; Workaround rounding/off-by-one issues.
(memq pdf-view-display-size
'(fit-height fit-page)))
@@ -757,7 +763,8 @@ at the bottom edge of the page moves to the next page."
(if pdf-view-continuous
(let ((hscroll (window-hscroll))
(cur-page (pdf-view-current-page)))
- (when (= (window-vscroll) (image-next-line arg))
+ (when (= (window-vscroll nil pdf-view-have-image-mode-pixel-vscroll)
+ (image-next-line arg))
(pdf-view-next-page)
(when (/= cur-page (pdf-view-current-page))
(image-bob)
@@ -774,7 +781,8 @@ at the top edge of the page moves to the previous page."
(if pdf-view-continuous
(let ((hscroll (window-hscroll))
(cur-page (pdf-view-current-page)))
- (when (= (window-vscroll) (image-previous-line arg))
+ (when (= (window-vscroll nil pdf-view-have-image-mode-pixel-vscroll)
+ (image-previous-line arg))
(pdf-view-previous-page)
(when (/= cur-page (pdf-view-current-page))
(image-eob)
@@ -1021,7 +1029,8 @@ It is equal to \(LEFT . TOP\) of the current slice in pixel."
(vscroll (image-mode-window-get 'vscroll win)))
;; Reset scroll settings, in case they were changed.
(if hscroll (set-window-hscroll win hscroll))
- (if vscroll (set-window-vscroll win vscroll)))))))
+ (if vscroll (set-window-vscroll
+ win vscroll pdf-view-have-image-mode-pixel-vscroll)))))))
(defun pdf-view-redisplay (&optional window)
"Redisplay page in WINDOW.
@@ -1564,7 +1573,9 @@ See also `pdf-view-bookmark-make-record'."
(frame-char-width))))
(image-set-window-vscroll
(round (/ (* (cdr origin) (cdr size))
- (frame-char-height)))))))))
+ (if pdf-view-have-image-mode-pixel-vscroll
+ 1
+ (frame-char-height))))))))))
(add-hook 'bookmark-after-jump-hook show-fn-sym)
(set-buffer (or (find-buffer-visiting file)
(find-file-noselect file)))))