Mercurial > emacs
diff src/w32term.c @ 40005:8bde67004473
(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.
author | Andrew Innes <andrewi@gnu.org> |
---|---|
date | Wed, 17 Oct 2001 17:18:23 +0000 |
parents | 579177964efa |
children | 1a8e549e2f40 |
line wrap: on
line diff
--- a/src/w32term.c Wed Oct 17 15:38:45 2001 +0000 +++ b/src/w32term.c Wed Oct 17 17:18:23 2001 +0000 @@ -8713,9 +8713,19 @@ 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)