]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix problem with 'scroll-bar-adjust-thumb-portion' nil (Bug#32002)
authorMartin Rudalics <rudalics@gmx.at>
Sat, 28 Jul 2018 07:08:30 +0000 (09:08 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Sat, 28 Jul 2018 07:08:30 +0000 (09:08 +0200)
* lisp/scroll-bar.el (scroll-bar-drag-1): Do not scroll window
when its buffer is fully visible and
'scroll-bar-adjust-thumb-portion' is nil (Bug#32002).

lisp/scroll-bar.el

index 4d1ad03fa5fc3664b6abbc6b1dff339b6b5b69af..7efbfc7774265455123d61b03e02e473fbd1a335 100644 (file)
@@ -254,14 +254,22 @@ EVENT should be a scroll bar click or drag event."
   (let* ((start-position (event-start event))
         (window (nth 0 start-position))
         (portion-whole (nth 2 start-position)))
-    (save-excursion
-      (with-current-buffer (window-buffer window)
-       ;; Calculate position relative to the accessible part of the buffer.
-       (goto-char (+ (point-min)
-                     (scroll-bar-scale portion-whole
-                                       (- (point-max) (point-min)))))
-       (vertical-motion 0 window)
-       (set-window-start window (point))))))
+    ;; With 'scroll-bar-adjust-thumb-portion' nil and 'portion-whole'
+    ;; indicating that the buffer is fully visible, do not scroll the
+    ;; window since that might make it impossible to scroll it back
+    ;; with GTK's thumb (Bug#32002).
+    (when (or scroll-bar-adjust-thumb-portion
+              (not (numberp (car portion-whole)))
+              (not (numberp (cdr portion-whole)))
+              (/= (car portion-whole) (cdr portion-whole)))
+      (save-excursion
+        (with-current-buffer (window-buffer window)
+         ;; Calculate position relative to the accessible part of the buffer.
+         (goto-char (+ (point-min)
+                       (scroll-bar-scale portion-whole
+                                         (- (point-max) (point-min)))))
+         (vertical-motion 0 window)
+         (set-window-start window (point)))))))
 
 (defun scroll-bar-drag (event)
   "Scroll the window by dragging the scroll bar slider.