diff options
author | Karl Heuer <kwzh@gnu.org> | 1995-06-11 20:48:19 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1995-06-11 20:48:19 +0000 |
commit | e7f9c3bb73d76a681e0ccb4cb076a4b535b8db7f (patch) | |
tree | d23fa945b5fa8136cf6fa3bed3b52770749075dd /src/xterm.c | |
parent | 2b0df7655ce4cf75a44f989bf364619e288fce37 (diff) | |
download | emacs-e7f9c3bb73d76a681e0ccb4cb076a4b535b8db7f.tar.gz |
(x_make_frame_visible): Test and set asked_for_visible.
Diffstat (limited to 'src/xterm.c')
-rw-r--r-- | src/xterm.c | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/src/xterm.c b/src/xterm.c index f4d0fc8e543..072974a0ec2 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -236,6 +236,34 @@ static int x_io_error_quitter (); 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 @@ XTframe_raise_lower (f, raise) /* 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 @@ x_make_frame_visible (f) 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 |