# HG changeset patch # User Karl Heuer # Date 802903699 0 # Node ID 1b571a7992b00b6f806e9cf58c714bf29ac64705 # Parent 33e8a9ef3cab1633e80ee6e118ec19c547c030eb (x_make_frame_visible): Test and set asked_for_visible. diff -r 33e8a9ef3cab -r 1b571a7992b0 src/xterm.c --- a/src/xterm.c Sun Jun 11 20:47:48 1995 +0000 +++ b/src/xterm.c Sun Jun 11 20:48:19 1995 +0000 @@ -236,6 +236,34 @@ void x_catch_errors (); void x_uncatch_errors (); +#if 0 +/* This is a function useful for recording debugging information + about the sequence of occurrences in this file. */ + +struct record +{ + char *locus; + int type; +}; + +struct record event_record[100]; + +int event_record_index; + +record_event (locus, type) + char *locus; + int type; +{ + if (event_record_index == sizeof (event_record) / sizeof (struct record)) + event_record_index = 0; + + event_record[event_record_index].locus = locus; + event_record[event_record_index].type = type; + event_record_index++; +} + +#endif /* 0 */ + /* Return the struct x_display_info corresponding to DPY. */ struct x_display_info * @@ -5073,6 +5101,13 @@ /* Change of visibility. */ +/* This tries to wait until the frame is really visible. + However, if the window manager asks the user where to position + the frame, this will return before the user finishes doing that. + The frame will not actually be visible at that time, + but it will become visible later when the window manager + finishes with it. */ + x_make_frame_visible (f) struct frame *f; { @@ -5087,9 +5122,16 @@ if (! FRAME_VISIBLE_P (f)) { - if (! FRAME_ICONIFIED_P (f)) + /* We test FRAME_GARBAGED_P here to make sure we don't + call x_set_offset a second time + if we get to x_make_frame_visible a second time + before the window gets really visible. */ + if (! FRAME_ICONIFIED_P (f) + && ! f->display.x->asked_for_visible) x_set_offset (f, f->display.x->left_pos, f->display.x->top_pos, 0); + f->display.x->asked_for_visible = 1; + if (! EQ (Vx_no_window_manager, Qt)) x_wm_set_window_state (f, NormalState); #ifdef USE_X_TOOLKIT