changeset 17954:7c919d7f8217

(x_real_positions): Directly compare the frame's window or parent with the root window.
author Richard M. Stallman <rms@gnu.org>
date Mon, 26 May 1997 07:53:35 +0000
parents 96a51be54a7e
children 3140e48262f9
files src/xfns.c
diffstat 1 files changed, 18 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/src/xfns.c	Mon May 26 06:22:15 1997 +0000
+++ b/src/xfns.c	Mon May 26 07:53:35 1997 +0000
@@ -969,6 +969,7 @@
   while (1)
     {
       int count = x_catch_errors (FRAME_X_DISPLAY (f));
+      Window outer_window;
 
       XQueryTree (FRAME_X_DISPLAY (f), outer, &tmp_root_window,
 		  &f->output_data.x->parent_desc,
@@ -980,28 +981,21 @@
       /* Find the position of the outside upper-left corner of
 	 the inner window, with respect to the outer window.  */
       if (f->output_data.x->parent_desc != FRAME_X_DISPLAY_INFO (f)->root_window)
-	{
-	  XTranslateCoordinates (FRAME_X_DISPLAY (f),
-
-				 /* From-window, to-window.  */
-#ifdef USE_X_TOOLKIT
-				 XtWindow (f->output_data.x->widget),
-#else
-				 f->output_data.x->window_desc,
-#endif
-				 f->output_data.x->parent_desc,
-
-				 /* From-position, to-position.  */
-				 0, 0, &win_x, &win_y,
-
-				 /* Child of win.  */
-				 &child);
-
-#if 0  /* The values seem to be right without this and wrong with.  */
-	  win_x += f->output_data.x->border_width;
-	  win_y += f->output_data.x->border_width;
-#endif
-	}
+	outer_window = f->output_data.x->parent_desc;
+      else
+	outer_window = outer;
+
+      XTranslateCoordinates (FRAME_X_DISPLAY (f),
+
+			     /* From-window, to-window.  */
+			     outer_window,
+			     FRAME_X_DISPLAY_INFO (f)->root_window,
+
+			     /* From-position, to-position.  */
+			     0, 0, &win_x, &win_y,
+
+			     /* Child of win.  */
+			     &child);
 
       /* It is possible for the window returned by the XQueryNotify
 	 to become invalid by the time we call XTranslateCoordinates.
@@ -1017,8 +1011,8 @@
       x_uncatch_errors (FRAME_X_DISPLAY (f), count);
     }
 
-  *xptr = f->output_data.x->left_pos - win_x;
-  *yptr = f->output_data.x->top_pos - win_y;
+  *xptr = win_x;
+  *yptr = win_y;
 }
 
 /* Insert a description of internally-recorded parameters of frame X