# HG changeset patch # User Jan Dj¸«£rv # Date 1033667509 0 # Node ID 8d54d470f30d5a06995e2c93dc956addee923393 # Parent be7a44c8fe9c685368b6ae0b37aac118639e18ae * xterm.c (XTread_socket): For ConfigureNotify, with x and y == 0, and USE_MOTIF, call XTranslateCoordinates to get the real x and y. This is to also handle x/y changes that occur because of a resize. diff -r be7a44c8fe9c -r 8d54d470f30d src/xterm.c --- a/src/xterm.c Thu Oct 03 13:46:25 2002 +0000 +++ b/src/xterm.c Thu Oct 03 17:51:49 2002 +0000 @@ -11179,8 +11179,24 @@ in the emacs widget, which messes up Motif menus. */ if (event.xconfigure.x == 0 && event.xconfigure.y == 0) { - event.xconfigure.x = f->output_data.x->widget->core.x; - event.xconfigure.y = f->output_data.x->widget->core.y; + Window child; + int count; + + /* We can get a ConfigureNotify because of a resize, + so we can't just take x and y from the widget. + Since this event may come on something else than + the top level window, we can't use x_real_position + either. So we get the root window x/y for 0/0 in + the window in the event. */ + count = x_catch_errors (FRAME_X_DISPLAY (f)); + XTranslateCoordinates (FRAME_X_DISPLAY (f), + event.xconfigure.window, + FRAME_X_DISPLAY_INFO (f)->root_window, + 0, 0, + &event.xconfigure.x, + &event.xconfigure.y, + &child); + x_uncatch_errors (FRAME_X_DISPLAY (f), count); } #endif /* USE_MOTIF */ }