bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#998: after split-window-horizontally scroll works only on first wind


From: martin rudalics
Subject: bug#998: after split-window-horizontally scroll works only on first window
Date: Fri, 19 Sep 2008 09:01:21 +0200
User-agent: Thunderbird 2.0.0.16 (Windows/20080708)

> <vertical-scroll-bar> <mouse-1> (translated from <mouse-1>) at that spot runs 
the command scroll-bar-toolkit-scroll
>   which is an interactive compiled Lisp function in `scroll-bar.el'.

OK.  Could you now please append the following modified version of
`scroll-bar-toolkit-scroll' to your .emacs, restart Emacs, split the
window horizontally, move the mouse into each of these windows, scroll
the mouse and tell me whether the windows mentioned in the messages you
should see (here I get for example .... #<window 3 on .emacs>) have the
same or different values.

Thanks, martin.

;; code starts here
(defun scroll-bar-toolkit-scroll (event)
  (interactive "e")
  (let* ((end-position (event-end event))
         (window (nth 0 end-position))
         (part (nth 4 end-position))
         before-scroll)
    (message ".... %s" window)
    (cond ((eq part 'end-scroll))
          (t
           (with-current-buffer (window-buffer window)
             (setq before-scroll point-before-scroll))
           (save-selected-window
             (select-window window)
             (setq before-scroll (or before-scroll (point)))
             (cond ((eq part 'above-handle)
                    (scroll-up '-))
                   ((eq part 'below-handle)
                    (scroll-up nil))
                   ((eq part 'ratio)
                    (let* ((portion-whole (nth 2 end-position))
                           (lines (scroll-bar-scale portion-whole
                                                    (1- (window-height)))))
                      (scroll-up (cond ((not (zerop lines)) lines)
                                       ((< (car portion-whole) 0) -1)
                                       (t 1)))))
                   ((eq part 'up)
                    (scroll-up -1))
                   ((eq part 'down)
                    (scroll-up 1))
                   ((eq part 'top)
                    (set-window-start window (point-min)))
                   ((eq part 'bottom)
                    (goto-char (point-max))
                    (recenter))
                   ((eq part 'handle)
                    (scroll-bar-drag-1 event))))
           (sit-for 0)
           (with-current-buffer (window-buffer window)
             (setq point-before-scroll before-scroll))))))
;; code ends here






reply via email to

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