diff options
| author | Andreas Politz <politza@hochschule-trier.de> | 2019-07-01 04:02:33 +0200 |
|---|---|---|
| committer | Andreas Politz <politza@hochschule-trier.de> | 2019-07-01 04:02:33 +0200 |
| commit | db7de3901ae0e55f6ab8cf9baec257f706c3d16e (patch) | |
| tree | c8b35b6cedc1e8b59f174d094aef258d6f19764c | |
| parent | ba031d135a68d20cda9f652d890780c8d6dc0125 (diff) | |
Remember to redisplay pages which were changed while hidden
| -rw-r--r-- | lisp/pdf-view.el | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/lisp/pdf-view.el b/lisp/pdf-view.el index 64c1ab0..d7adb48 100644 --- a/lisp/pdf-view.el +++ b/lisp/pdf-view.el @@ -242,6 +242,9 @@ regarding display of the region in the later function.") ;;TODO: write documentation! `(image-mode-window-get 'window-size ,window)) +(defmacro pdf-view-window-needs-redisplay (&optional window) + `(image-mode-window-get 'needs-redisplay ,window)) + (defun pdf-view-current-pagelabel (&optional window) (nth (1- (pdf-view-current-page window)) (pdf-info-pagelabels))) @@ -399,7 +402,7 @@ PNG images in Emacs buffers." (setq-local cua-mode nil)) (add-hook 'window-configuration-change-hook - 'pdf-view-maybe-redisplay-resized-windows nil t) + 'pdf-view-redisplay-some-windows nil t) (add-hook 'deactivate-mark-hook 'pdf-view-deactivate-region nil t) (add-hook 'write-contents-functions 'pdf-view--write-contents-function nil t) @@ -979,6 +982,7 @@ It is equal to \(LEFT . TOP\) of the current slice in pixel." (defun pdf-view-display-page (page &optional window) "Display page PAGE in WINDOW." + (setf (pdf-view-window-needs-redisplay window) nil) (pdf-view-display-image (pdf-view-create-page page window) window)) @@ -1031,7 +1035,13 @@ If WINDOW is t, redisplay pages in all windows." (dolist (win (get-buffer-window-list nil nil t)) (pdf-view-display-page (pdf-view-current-page win) - win))) + win)) + (when (consp image-mode-winprops-alist) + (dolist (window (mapcar #'car image-mode-winprops-alist)) + (unless (or (not (window-live-p window)) + (eq (current-buffer) + (window-buffer window))) + (setf (pdf-view-window-needs-redisplay window) t))))) (force-mode-line-update))) (defun pdf-view-redisplay-pages (&rest pages) @@ -1060,6 +1070,12 @@ If WINDOW is t, redisplay pages in all windows." (eq (cdr size) (cdr stored)))) (pdf-view-redisplay window))))))) +(defun pdf-view-redisplay-some-windows () + (pdf-view-maybe-redisplay-resized-windows) + (dolist (window (get-buffer-window-list nil nil t)) + (when (pdf-view-window-needs-redisplay window) + (pdf-view-redisplay window)))) + (defun pdf-view-new-window-function (winprops) ;; TODO: write documentation! ;; (message "New window %s for buf %s" (car winprops) (current-buffer)) |
