changeset 18008:d25d2472df51

(XTread_socket) <ConfigureNotify>: Don't call x_wm_set_size_hint if window has no parent yet. Simplify the call to x_real_positions. (x_make_frame_visible): Use win_gravity to decide whether to call XMoveWindow. Also, don't do it if frame already visible.
author Richard M. Stallman <rms@gnu.org>
date Wed, 28 May 1997 04:54:48 +0000
parents 544bdf0ca834
children 7c256846be75
files src/xterm.c
diffstat 1 files changed, 17 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/src/xterm.c	Wed May 28 04:36:42 1997 +0000
+++ b/src/xterm.c	Wed May 28 04:54:48 1997 +0000
@@ -4377,23 +4377,16 @@
 
 		  /* What we have now is the position of Emacs's own window.
 		     Convert that to the position of the window manager window.  */
-		  {
-		    int x, y;
-		    x_real_positions (f, &x, &y);
-		    f->output_data.x->left_pos = x;
-		    f->output_data.x->top_pos = y;
-#if 0
-		    if (y != event.xconfigure.y)
-		      {
-#endif
-			/* Since the WM decorations come below top_pos now,
-			   we must put them below top_pos in the future.  */
-			f->output_data.x->win_gravity = NorthWestGravity;
-			x_wm_set_size_hint (f, (long) 0, 0);
-#if 0
-		      }
-#endif
-		  }
+		  x_real_positions (f, &f->output_data.x->left_pos,
+				    &f->output_data.x->top_pos);
+
+		  if (f->output_data.x->parent_desc != FRAME_X_DISPLAY_INFO (f)->root_window)
+		    {
+		      /* Since the WM decorations come below top_pos now,
+			 we must put them below top_pos in the future.  */
+		      f->output_data.x->win_gravity = NorthWestGravity;
+		      x_wm_set_size_hint (f, (long) 0, 0);
+		    }
 		}
 	      goto OTHER;
 
@@ -5677,9 +5670,13 @@
 
     /* Arriving X events are processed here.  */
 
-    /* Now move the window back to where it was "supposed to be".  */
-
-    if (! (starting_flags & (XNegative | YNegative)))
+    /* Now move the window back to where it was "supposed to be".
+       But don't do it if the gravity is negative.
+       When the gravity is negative, this uses a position
+       that is 3 pixels too low.  Perhaps that's really the border width.  */
+
+    if (! FRAME_VISIBLE_P (f)
+	&& f->output_data.x->win_gravity == NorthWestGravity)
       {
 	BLOCK_INPUT;