This is a small patch that fixes
 http://sourceware.org/bugzilla/show_bug.cgi?id=512

Please integrate it into the cygwin DLL.

2004-11-26  Thomas Wolff  <[EMAIL PROTECTED]>

* fhandler_console.cc (read) <mouse position detection>: 
     Considering offset within scrolling region of the DOS box window.
     See http://sourceware.org/bugzilla/show_bug.cgi?id=512

--- cygwin-1.5.12-1/winsup/cygwin/fhandler_console.cc   2004-10-28 
17:33:04.000000000 +0200
+++ cygwin-1.5.12-1/winsup/cygwin/fhandler_console.cc.fix512    2004-11-30 
12:42:40.172503500 +0100
@@ -422,10 +422,25 @@ fhandler_console::read (void *pv, size_t
              if (mouse_event.dwEventFlags)
                continue;
 
-             /* If the mouse event occurred out of the area we can handle,
-                ignore it. */
+             /* Retrieve reported mouse position */
              int x = mouse_event.dwMousePosition.X;
              int y = mouse_event.dwMousePosition.Y;
+
+             /* Adjust mouse position by scroll buffer offset */
+             CONSOLE_SCREEN_BUFFER_INFO now;
+             if (GetConsoleScreenBufferInfo (get_output_handle (), &now))
+               {
+                 y -= now.srWindow.Top;
+                 x -= now.srWindow.Left;
+               }
+             else
+               {
+                 syscall_printf ("mouse: cannot adjust position by scroll 
buffer offset");
+                 continue;
+               }
+
+             /* If the mouse event occurred out of the area we can handle,
+                ignore it. */
              if ((x + ' ' + 1 > 0xFF) || (y + ' ' + 1 > 0xFF))
                {
                  syscall_printf ("mouse: position out of range");

Reply via email to