]> git.eshelyaron.com Git - emacs.git/commitdiff
(w32_read_socket): Determine clipping rectangle for
authorAndrew Innes <andrewi@gnu.org>
Wed, 17 Oct 2001 17:22:37 +0000 (17:22 +0000)
committerAndrew Innes <andrewi@gnu.org>
Wed, 17 Oct 2001 17:22:37 +0000 (17:22 +0000)
the entire frame, including areas covered by scrollbars and the
menubar.  This avoids internal arguments about whether a frame is
fully obscured or not.

src/ChangeLog
src/w32term.c

index fba800fff72c9a7bca9b832443669ac8fe9fc128..30d8548780f45a1b63244d1662eaeb2d5dedad07 100644 (file)
@@ -1,3 +1,10 @@
+2001-10-17  Andrew Innes  <andrewi@gnu.org>
+
+       * w32term.c (w32_read_socket): Determine clipping rectangle for
+       the entire frame, including areas covered by scrollbars and the
+       menubar.  This avoids internal arguments about whether a frame is
+       fully obscured or not.
+
 2001-10-17  Gerd Moellmann  <gerd@gnu.org>
 
        * xdisp.c (try_window_id): Undo last change.  Give up if
index 201a533151524556bfe2828a514033fa66b8e47c..e8af4c53e3e96277c2c4514bd0135bc7ba24e6c7 100644 (file)
@@ -8719,9 +8719,19 @@ w32_read_socket (sd, bufp, numchars, expected)
          if (FRAME_W32_P (f) && f->async_visible)
            {
              RECT clipbox;
-             HDC  hdc = get_frame_dc (f);
+             HDC  hdc;
+
+             enter_crit ();
+             /* Query clipping rectangle for the entire window area
+                 (GetWindowDC), not just the client portion (GetDC).
+                 Otherwise, the scrollbars and menubar aren't counted as
+                 part of the visible area of the frame, and we may think
+                 the frame is obscured when really a scrollbar is still
+                 visible and gets WM_PAINT messages above.  */
+             hdc = GetWindowDC (FRAME_W32_WINDOW (f));
              GetClipBox (hdc, &clipbox);
-             release_frame_dc (f, hdc);
+             ReleaseDC (FRAME_W32_WINDOW (f), hdc);
+             leave_crit ();
 
              if (clipbox.right == clipbox.left
                  || clipbox.bottom == clipbox.top)