Subject: bug#214: Bugs in window-at and coordinates-in-window-p built-in functions

From: "Hill, Gregory" <[email-masked]>
Date: Fri, 9 May 2008 13:32:40 -0400

GNU Emacs 22.1.1 (i386-mingw-nt5.1.2600) of 2007-06-02 on RELEASE
 
Use split-window-vertically once and split-window-horizontally twice to
create a frame that is split into 4 approximately equal sections (2 x
2).
 
Display a different buffer in each of the 4 windows.
 
Move the cursor to anywhere in the lower-right window.
 
Use eval-expression to execute the following expression:

 (let* ((edges (window-edges))
       (x (first edges))
       (y (1- (second edges))))
  (window-at x y))

Logically, this should return the upper-right window, but it actually
returns the upper-left window.

Possibly related to this bug, execute the following expression with the
cursor in any window:

(let* ((edges (window-edges))
       (x (first edges))
       (y (second edges))
       (window (selected-window)))
  (coordinates-in-window-p (cons x y) window))

Logically this should return (0 . 0) but it actually returns
'left-fringe.

Execute the following expression with the cursor in the lower-right
window:

(let* ((edges (window-edges))
       (x (first edges))
       (y (1- (second edges)))
       (window (window-at x y))) 
  (coordinates-in-window-p (cons x y) window))

It returns 'vertical-line when it should really return 'mode-line.  The
same expression evaluated with the cursor in the lower-left window
returns 'mode-line as it should.