summaryrefslogtreecommitdiff
path: root/src/xterm.c
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1995-06-11 20:48:19 +0000
committerKarl Heuer <kwzh@gnu.org>1995-06-11 20:48:19 +0000
commite7f9c3bb73d76a681e0ccb4cb076a4b535b8db7f (patch)
treed23fa945b5fa8136cf6fa3bed3b52770749075dd /src/xterm.c
parent2b0df7655ce4cf75a44f989bf364619e288fce37 (diff)
downloademacs-e7f9c3bb73d76a681e0ccb4cb076a4b535b8db7f.tar.gz
(x_make_frame_visible): Test and set asked_for_visible.
Diffstat (limited to 'src/xterm.c')
-rw-r--r--src/xterm.c44
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