changeset 71546:d1eb48dbd3e6

(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find the dimensions of the screen work area, and adjust vertical position of the frame in order to avoid being covered by the task bar.
author Eli Zaretskii <eliz@gnu.org>
date Fri, 30 Jun 2006 13:41:15 +0000
parents 26164031aa5a
children c8c9ce33fedf
files src/w32term.c
diffstat 1 files changed, 16 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32term.c	Fri Jun 30 13:40:21 2006 +0000
+++ b/src/w32term.c	Fri Jun 30 13:41:15 2006 +0000
@@ -5665,7 +5665,22 @@
 	 before the window gets really visible.  */
       if (! FRAME_ICONIFIED_P (f)
 	  && ! f->output_data.w32->asked_for_visible)
-	x_set_offset (f, f->left_pos, f->top_pos, 0);
+	{
+	  RECT workarea_rect;
+	  RECT window_rect;
+
+	  /* Adjust vertical window position in order to avoid being
+	     covered by a task bar placed at the bottom of the desktop. */
+	  SystemParametersInfo(SPI_GETWORKAREA, 0, &workarea_rect, 0);
+	  GetWindowRect(FRAME_W32_WINDOW(f), &window_rect);
+	  if (window_rect.bottom > workarea_rect.bottom
+	      && window_rect.top > workarea_rect.top)
+	    f->top_pos = max (window_rect.top
+			      - window_rect.bottom + workarea_rect.bottom,
+			      workarea_rect.top);
+
+	  x_set_offset (f, f->left_pos, f->top_pos, 0);
+	}
 
       f->output_data.w32->asked_for_visible = 1;