# HG changeset patch # User Richard M. Stallman # Date 864633215 0 # Node ID 7c919d7f82175ca574d1553a670fdb652aa4cccd # Parent 96a51be54a7e1021b2250fa5ef5f91eda49276dc (x_real_positions): Directly compare the frame's window or parent with the root window. diff -r 96a51be54a7e -r 7c919d7f8217 src/xfns.c --- 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