+2002-10-03 Jan D. <jan.h.d@swipnet.se>
+
+ * 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.
+
2002-10-02 John Paul Wallington <jpw@shootybangbang.com>
* frame.c (Vdelete_frame_functions): New variable.
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 */
}