Function: scroll-bar-toolkit-horizontal-scroll

scroll-bar-toolkit-horizontal-scroll is an interactive and byte-compiled function defined in scroll-bar.el.gz.

Signature

(scroll-bar-toolkit-horizontal-scroll EVENT)

Documentation

Handle event EVENT on horizontal scroll bar.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/scroll-bar.el.gz
(defun scroll-bar-toolkit-horizontal-scroll (event)
  "Handle event EVENT on horizontal scroll bar."
  (interactive "e")
  (let* ((end-position (event-end event))
	 (window (nth 0 end-position))
	 (part (nth 4 end-position))
	 (bidi-factor
	  (if (eq (current-bidi-paragraph-direction (window-buffer window))
		  'left-to-right)
	      1
	    -1))
	 before-scroll)
    (cond
     ((eq part 'end-scroll))
     (t
      (with-current-buffer (window-buffer window)
	(setq before-scroll point-before-scroll))
      (save-selected-window
	(select-window window 'mark-for-redisplay)
	(setq before-scroll (or before-scroll (point)))
	(cond
	 ((eq part 'before-handle)
	  (scroll-right (* bidi-factor 4)))
	 ((eq part 'after-handle)
	  (scroll-left (* bidi-factor 4)))
	 ((eq part 'ratio)
	  (let* ((portion-whole (nth 2 end-position))
		 (columns (scroll-bar-scale portion-whole
					    (1- (window-width)))))
	    (scroll-right
	     (* (cond
		 ((not (zerop columns))
		  columns)
		 ((< (car portion-whole) 0) -1)
		 (t 1))
		bidi-factor))))
	 ((eq part 'left)
	  (scroll-right (* bidi-factor 1)))
	 ((eq part 'right)
	  (scroll-left (* bidi-factor 1)))
	 ((eq part 'leftmost)
	  (goto-char (if (eq bidi-factor 1)
			 (line-beginning-position)
		       (line-end-position))))
	 ((eq part 'rightmost)
	  (goto-char (if (eq bidi-factor 1)
			 (line-end-position)
		       (line-beginning-position))))
	 ((eq part 'horizontal-handle)
	  (scroll-bar-horizontal-drag-1 event))))
      (sit-for 0)
      (with-current-buffer (window-buffer window)
	(setq point-before-scroll before-scroll))))))