Lisp_Object Qscroll_bar_foreground, Qscroll_bar_background;
Lisp_Object Qscreen_gamma, Qline_spacing, Qcenter;
Lisp_Object Qcompound_text, Qcancel_timer;
+Lisp_Object Qwait_for_wm;
/* The below are defined in frame.c. */
static void x_create_im P_ ((struct frame *));
void x_set_foreground_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
static void x_set_line_spacing P_ ((struct frame *, Lisp_Object, Lisp_Object));
+static void x_set_wait_for_wm P_ ((struct frame *, Lisp_Object, Lisp_Object));
void x_set_background_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
void x_set_mouse_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
void x_set_cursor_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
"scroll-bar-foreground", x_set_scroll_bar_foreground,
"scroll-bar-background", x_set_scroll_bar_background,
"screen-gamma", x_set_screen_gamma,
- "line-spacing", x_set_line_spacing
+ "line-spacing", x_set_line_spacing,
+ "wait-for-wm", x_set_wait_for_wm
};
/* Attach the `x-frame-parameter' properties to
}
+/* Change the `wait-for-wm' frame parameter of frame F. OLD_VALUE is
+ the previous value of that parameter, NEW_VALUE is the new value.
+ See also the comment of wait_for_wm in struct x_output. */
+
+static void
+x_set_wait_for_wm (f, new_value, old_value)
+ struct frame *f;
+ Lisp_Object new_value, old_value;
+{
+ f->output_data.x->wait_for_wm = !NILP (new_value);
+}
+
+
/* Change the `screen-gamma' frame parameter of frame F. OLD_VALUE is
- the previous value of that parameter, NEW_VALUE is the new value. */
+ the previous value of that parameter, NEW_VALUE is the new
+ value. */
static void
x_set_screen_gamma (f, new_value, old_value)
struct frame *f;
Lisp_Object arg, oldval;
{
- unsigned long pixel = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
+ struct x_output *x = f->output_data.x;
+ unsigned long fg, old_fg;
- unload_color (f, f->output_data.x->foreground_pixel);
- f->output_data.x->foreground_pixel = pixel;
+ fg = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
+ old_fg = x->foreground_pixel;
+ x->foreground_pixel = fg;
if (FRAME_X_WINDOW (f) != 0)
{
+ Display *dpy = FRAME_X_DISPLAY (f);
+
BLOCK_INPUT;
- XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->normal_gc,
- f->output_data.x->foreground_pixel);
- XSetBackground (FRAME_X_DISPLAY (f), f->output_data.x->reverse_gc,
- f->output_data.x->foreground_pixel);
- XSetBackground (FRAME_X_DISPLAY (f), f->output_data.x->cursor_gc,
- f->output_data.x->foreground_pixel);
+ XSetForeground (dpy, x->normal_gc, fg);
+ XSetBackground (dpy, x->reverse_gc, fg);
+
+ if (x->cursor_pixel == old_fg)
+ {
+ unload_color (f, x->cursor_pixel);
+ x->cursor_pixel = x_copy_color (f, fg);
+ XSetBackground (dpy, x->cursor_gc, x->cursor_pixel);
+ }
+
UNBLOCK_INPUT;
+
update_face_from_frame_parameter (f, Qforeground_color, arg);
+
if (FRAME_VISIBLE_P (f))
redraw_frame (f);
}
+
+ unload_color (f, old_fg);
}
void
struct frame *f;
Lisp_Object arg, oldval;
{
- unsigned long pixel = x_decode_color (f, arg, WHITE_PIX_DEFAULT (f));
+ struct x_output *x = f->output_data.x;
+ unsigned long bg;
- unload_color (f, f->output_data.x->background_pixel);
- f->output_data.x->background_pixel = pixel;
+ bg = x_decode_color (f, arg, WHITE_PIX_DEFAULT (f));
+ unload_color (f, x->background_pixel);
+ x->background_pixel = bg;
if (FRAME_X_WINDOW (f) != 0)
{
+ Display *dpy = FRAME_X_DISPLAY (f);
+ Lisp_Object bar;
+
BLOCK_INPUT;
- /* The main frame area. */
- XSetBackground (FRAME_X_DISPLAY (f), f->output_data.x->normal_gc,
- f->output_data.x->background_pixel);
- XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->reverse_gc,
- f->output_data.x->background_pixel);
- XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->cursor_gc,
- f->output_data.x->background_pixel);
- XSetWindowBackground (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
- f->output_data.x->background_pixel);
- {
- Lisp_Object bar;
- for (bar = FRAME_SCROLL_BARS (f); !NILP (bar);
- bar = XSCROLL_BAR (bar)->next)
- XSetWindowBackground (FRAME_X_DISPLAY (f),
- SCROLL_BAR_X_WINDOW (XSCROLL_BAR (bar)),
- f->output_data.x->background_pixel);
- }
- UNBLOCK_INPUT;
+ XSetBackground (dpy, x->normal_gc, bg);
+ XSetForeground (dpy, x->reverse_gc, bg);
+ XSetWindowBackground (dpy, FRAME_X_WINDOW (f), bg);
+ XSetForeground (dpy, x->cursor_gc, bg);
+
+ for (bar = FRAME_SCROLL_BARS (f);
+ !NILP (bar);
+ bar = XSCROLL_BAR (bar)->next)
+ {
+ Window window = SCROLL_BAR_X_WINDOW (XSCROLL_BAR (bar));
+ XSetWindowBackground (dpy, window, bg);
+ }
+ UNBLOCK_INPUT;
update_face_from_frame_parameter (f, Qbackground_color, arg);
if (FRAME_VISIBLE_P (f))
struct frame *f;
Lisp_Object arg, oldval;
{
+ struct x_output *x = f->output_data.x;
+ Display *dpy = FRAME_X_DISPLAY (f);
Cursor cursor, nontext_cursor, mode_cursor, cross_cursor;
Cursor hourglass_cursor, horizontal_drag_cursor;
int count;
unsigned long pixel = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
- unsigned long mask_color = f->output_data.x->background_pixel;
+ unsigned long mask_color = x->background_pixel;
/* Don't let pointers be invisible. */
- if (mask_color == pixel
- && mask_color == f->output_data.x->background_pixel)
+ if (mask_color == pixel)
{
x_free_colors (f, &pixel, 1);
- pixel = x_copy_color (f, f->output_data.x->foreground_pixel);
+ pixel = x_copy_color (f, x->foreground_pixel);
}
- unload_color (f, f->output_data.x->mouse_pixel);
- f->output_data.x->mouse_pixel = pixel;
+ unload_color (f, x->mouse_pixel);
+ x->mouse_pixel = pixel;
BLOCK_INPUT;
/* It's not okay to crash if the user selects a screwy cursor. */
- count = x_catch_errors (FRAME_X_DISPLAY (f));
+ count = x_catch_errors (dpy);
- if (!EQ (Qnil, Vx_pointer_shape))
+ if (!NILP (Vx_pointer_shape))
{
CHECK_NUMBER (Vx_pointer_shape, 0);
- cursor = XCreateFontCursor (FRAME_X_DISPLAY (f), XINT (Vx_pointer_shape));
+ cursor = XCreateFontCursor (dpy, XINT (Vx_pointer_shape));
}
else
- cursor = XCreateFontCursor (FRAME_X_DISPLAY (f), XC_xterm);
- x_check_errors (FRAME_X_DISPLAY (f), "bad text pointer cursor: %s");
+ cursor = XCreateFontCursor (dpy, XC_xterm);
+ x_check_errors (dpy, "bad text pointer cursor: %s");
- if (!EQ (Qnil, Vx_nontext_pointer_shape))
+ if (!NILP (Vx_nontext_pointer_shape))
{
CHECK_NUMBER (Vx_nontext_pointer_shape, 0);
- nontext_cursor = XCreateFontCursor (FRAME_X_DISPLAY (f),
- XINT (Vx_nontext_pointer_shape));
+ nontext_cursor
+ = XCreateFontCursor (dpy, XINT (Vx_nontext_pointer_shape));
}
else
- nontext_cursor = XCreateFontCursor (FRAME_X_DISPLAY (f), XC_left_ptr);
- x_check_errors (FRAME_X_DISPLAY (f), "bad nontext pointer cursor: %s");
+ nontext_cursor = XCreateFontCursor (dpy, XC_left_ptr);
+ x_check_errors (dpy, "bad nontext pointer cursor: %s");
- if (!EQ (Qnil, Vx_hourglass_pointer_shape))
+ if (!NILP (Vx_hourglass_pointer_shape))
{
CHECK_NUMBER (Vx_hourglass_pointer_shape, 0);
- hourglass_cursor = XCreateFontCursor (FRAME_X_DISPLAY (f),
- XINT (Vx_hourglass_pointer_shape));
+ hourglass_cursor
+ = XCreateFontCursor (dpy, XINT (Vx_hourglass_pointer_shape));
}
else
- hourglass_cursor = XCreateFontCursor (FRAME_X_DISPLAY (f), XC_watch);
- x_check_errors (FRAME_X_DISPLAY (f), "bad hourglass pointer cursor: %s");
+ hourglass_cursor = XCreateFontCursor (dpy, XC_watch);
+ x_check_errors (dpy, "bad hourglass pointer cursor: %s");
- x_check_errors (FRAME_X_DISPLAY (f), "bad nontext pointer cursor: %s");
- if (!EQ (Qnil, Vx_mode_pointer_shape))
+ x_check_errors (dpy, "bad nontext pointer cursor: %s");
+ if (!NILP (Vx_mode_pointer_shape))
{
CHECK_NUMBER (Vx_mode_pointer_shape, 0);
- mode_cursor = XCreateFontCursor (FRAME_X_DISPLAY (f),
- XINT (Vx_mode_pointer_shape));
+ mode_cursor = XCreateFontCursor (dpy, XINT (Vx_mode_pointer_shape));
}
else
- mode_cursor = XCreateFontCursor (FRAME_X_DISPLAY (f), XC_xterm);
- x_check_errors (FRAME_X_DISPLAY (f), "bad modeline pointer cursor: %s");
+ mode_cursor = XCreateFontCursor (dpy, XC_xterm);
+ x_check_errors (dpy, "bad modeline pointer cursor: %s");
- if (!EQ (Qnil, Vx_sensitive_text_pointer_shape))
+ if (!NILP (Vx_sensitive_text_pointer_shape))
{
CHECK_NUMBER (Vx_sensitive_text_pointer_shape, 0);
cross_cursor
- = XCreateFontCursor (FRAME_X_DISPLAY (f),
- XINT (Vx_sensitive_text_pointer_shape));
+ = XCreateFontCursor (dpy, XINT (Vx_sensitive_text_pointer_shape));
}
else
- cross_cursor = XCreateFontCursor (FRAME_X_DISPLAY (f), XC_crosshair);
+ cross_cursor = XCreateFontCursor (dpy, XC_crosshair);
if (!NILP (Vx_window_horizontal_drag_shape))
{
CHECK_NUMBER (Vx_window_horizontal_drag_shape, 0);
horizontal_drag_cursor
- = XCreateFontCursor (FRAME_X_DISPLAY (f),
- XINT (Vx_window_horizontal_drag_shape));
+ = XCreateFontCursor (dpy, XINT (Vx_window_horizontal_drag_shape));
}
else
horizontal_drag_cursor
- = XCreateFontCursor (FRAME_X_DISPLAY (f), XC_sb_h_double_arrow);
+ = XCreateFontCursor (dpy, XC_sb_h_double_arrow);
/* Check and report errors with the above calls. */
- x_check_errors (FRAME_X_DISPLAY (f), "can't set cursor shape: %s");
- x_uncatch_errors (FRAME_X_DISPLAY (f), count);
+ x_check_errors (dpy, "can't set cursor shape: %s");
+ x_uncatch_errors (dpy, count);
{
XColor fore_color, back_color;
- fore_color.pixel = f->output_data.x->mouse_pixel;
+ fore_color.pixel = x->mouse_pixel;
x_query_color (f, &fore_color);
back_color.pixel = mask_color;
x_query_color (f, &back_color);
- XRecolorCursor (FRAME_X_DISPLAY (f), cursor,
- &fore_color, &back_color);
- XRecolorCursor (FRAME_X_DISPLAY (f), nontext_cursor,
- &fore_color, &back_color);
- XRecolorCursor (FRAME_X_DISPLAY (f), mode_cursor,
- &fore_color, &back_color);
- XRecolorCursor (FRAME_X_DISPLAY (f), cross_cursor,
- &fore_color, &back_color);
- XRecolorCursor (FRAME_X_DISPLAY (f), hourglass_cursor,
- &fore_color, &back_color);
- XRecolorCursor (FRAME_X_DISPLAY (f), horizontal_drag_cursor,
- &fore_color, &back_color);
+ XRecolorCursor (dpy, cursor, &fore_color, &back_color);
+ XRecolorCursor (dpy, nontext_cursor, &fore_color, &back_color);
+ XRecolorCursor (dpy, mode_cursor, &fore_color, &back_color);
+ XRecolorCursor (dpy, cross_cursor, &fore_color, &back_color);
+ XRecolorCursor (dpy, hourglass_cursor, &fore_color, &back_color);
+ XRecolorCursor (dpy, horizontal_drag_cursor, &fore_color, &back_color);
}
if (FRAME_X_WINDOW (f) != 0)
- XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), cursor);
-
- if (cursor != f->output_data.x->text_cursor
- && f->output_data.x->text_cursor != 0)
- XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->text_cursor);
- f->output_data.x->text_cursor = cursor;
-
- if (nontext_cursor != f->output_data.x->nontext_cursor
- && f->output_data.x->nontext_cursor != 0)
- XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->nontext_cursor);
- f->output_data.x->nontext_cursor = nontext_cursor;
-
- if (hourglass_cursor != f->output_data.x->hourglass_cursor
- && f->output_data.x->hourglass_cursor != 0)
- XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->hourglass_cursor);
- f->output_data.x->hourglass_cursor = hourglass_cursor;
-
- if (mode_cursor != f->output_data.x->modeline_cursor
- && f->output_data.x->modeline_cursor != 0)
- XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->modeline_cursor);
- f->output_data.x->modeline_cursor = mode_cursor;
-
- if (cross_cursor != f->output_data.x->cross_cursor
- && f->output_data.x->cross_cursor != 0)
- XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->cross_cursor);
- f->output_data.x->cross_cursor = cross_cursor;
-
- if (horizontal_drag_cursor != f->output_data.x->horizontal_drag_cursor
- && f->output_data.x->horizontal_drag_cursor != 0)
- XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->horizontal_drag_cursor);
- f->output_data.x->horizontal_drag_cursor = horizontal_drag_cursor;
-
- XFlush (FRAME_X_DISPLAY (f));
+ XDefineCursor (dpy, FRAME_X_WINDOW (f), cursor);
+
+ if (cursor != x->text_cursor
+ && x->text_cursor != 0)
+ XFreeCursor (dpy, x->text_cursor);
+ x->text_cursor = cursor;
+
+ if (nontext_cursor != x->nontext_cursor
+ && x->nontext_cursor != 0)
+ XFreeCursor (dpy, x->nontext_cursor);
+ x->nontext_cursor = nontext_cursor;
+
+ if (hourglass_cursor != x->hourglass_cursor
+ && x->hourglass_cursor != 0)
+ XFreeCursor (dpy, x->hourglass_cursor);
+ x->hourglass_cursor = hourglass_cursor;
+
+ if (mode_cursor != x->modeline_cursor
+ && x->modeline_cursor != 0)
+ XFreeCursor (dpy, f->output_data.x->modeline_cursor);
+ x->modeline_cursor = mode_cursor;
+
+ if (cross_cursor != x->cross_cursor
+ && x->cross_cursor != 0)
+ XFreeCursor (dpy, x->cross_cursor);
+ x->cross_cursor = cross_cursor;
+
+ if (horizontal_drag_cursor != x->horizontal_drag_cursor
+ && x->horizontal_drag_cursor != 0)
+ XFreeCursor (dpy, x->horizontal_drag_cursor);
+ x->horizontal_drag_cursor = horizontal_drag_cursor;
+
+ XFlush (dpy);
UNBLOCK_INPUT;
update_face_from_frame_parameter (f, Qmouse_color, arg);
{
unsigned long fore_pixel, pixel;
int fore_pixel_allocated_p = 0, pixel_allocated_p = 0;
+ struct x_output *x = f->output_data.x;
if (!NILP (Vx_cursor_fore_pixel))
{
fore_pixel_allocated_p = 1;
}
else
- fore_pixel = f->output_data.x->background_pixel;
+ fore_pixel = x->background_pixel;
pixel = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
pixel_allocated_p = 1;
/* Make sure that the cursor color differs from the background color. */
- if (pixel == f->output_data.x->background_pixel)
+ if (pixel == x->background_pixel)
{
if (pixel_allocated_p)
{
pixel_allocated_p = 0;
}
- pixel = f->output_data.x->mouse_pixel;
+ pixel = x->mouse_pixel;
if (pixel == fore_pixel)
{
if (fore_pixel_allocated_p)
x_free_colors (f, &fore_pixel, 1);
fore_pixel_allocated_p = 0;
}
- fore_pixel = f->output_data.x->background_pixel;
+ fore_pixel = x->background_pixel;
}
}
- unload_color (f, f->output_data.x->cursor_foreground_pixel);
+ unload_color (f, x->cursor_foreground_pixel);
if (!fore_pixel_allocated_p)
fore_pixel = x_copy_color (f, fore_pixel);
- f->output_data.x->cursor_foreground_pixel = fore_pixel;
+ x->cursor_foreground_pixel = fore_pixel;
- unload_color (f, f->output_data.x->cursor_pixel);
+ unload_color (f, x->cursor_pixel);
if (!pixel_allocated_p)
pixel = x_copy_color (f, pixel);
- f->output_data.x->cursor_pixel = pixel;
+ x->cursor_pixel = pixel;
if (FRAME_X_WINDOW (f) != 0)
{
BLOCK_INPUT;
- XSetBackground (FRAME_X_DISPLAY (f), f->output_data.x->cursor_gc,
- f->output_data.x->cursor_pixel);
- XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->cursor_gc,
- fore_pixel);
+ XSetBackground (FRAME_X_DISPLAY (f), x->cursor_gc, x->cursor_pixel);
+ XSetForeground (FRAME_X_DISPLAY (f), x->cursor_gc, fore_pixel);
UNBLOCK_INPUT;
if (FRAME_VISIBLE_P (f))
{
Lisp_Object black;
struct gcpro gcpro1;
+
+ /* Function x_decode_color can signal an error. Make
+ sure to initialize color slots so that we won't try
+ to free colors we haven't allocated. */
+ f->output_data.x->foreground_pixel = -1;
+ f->output_data.x->background_pixel = -1;
+ f->output_data.x->cursor_pixel = -1;
+ f->output_data.x->cursor_foreground_pixel = -1;
+ f->output_data.x->border_pixel = -1;
+ f->output_data.x->mouse_pixel = -1;
black = build_string ("black");
GCPRO1 (black);
RES_TYPE_SYMBOL);
x_default_parameter (f, parms, Qtitle, Qnil,
"title", "Title", RES_TYPE_STRING);
+ x_default_parameter (f, parms, Qwait_for_wm, Qt,
+ "waitForWM", "WaitForWM", RES_TYPE_BOOLEAN);
f->output_data.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window;
if (CONSP (object) && EQ (XCAR (object), Qimage))
{
- Lisp_Object symbol = Fplist_get (XCDR (object), QCtype);
- struct image_type *type = lookup_image_type (symbol);
-
- if (type)
- valid_p = type->valid_p (object);
+ Lisp_Object tem;
+
+ for (tem = XCDR (object); CONSP (tem); tem = XCDR (tem))
+ if (EQ (XCAR (tem), QCtype))
+ {
+ tem = XCDR (tem);
+ if (CONSP (tem) && SYMBOLP (XCAR (tem)))
+ {
+ struct image_type *type;
+ type = lookup_image_type (XCAR (tem));
+ if (type)
+ valid_p = type->valid_p (object);
+ }
+
+ break;
+ }
}
return valid_p;
{
IMAGE_DONT_CHECK_VALUE_TYPE,
IMAGE_STRING_VALUE,
+ IMAGE_STRING_OR_NIL_VALUE,
IMAGE_SYMBOL_VALUE,
IMAGE_POSITIVE_INTEGER_VALUE,
IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR,
return 0;
break;
+ case IMAGE_STRING_OR_NIL_VALUE:
+ if (!STRINGP (value) && !NILP (value))
+ return 0;
+ break;
+
case IMAGE_SYMBOL_VALUE:
if (!SYMBOLP (value))
return 0;
{":width", IMAGE_POSITIVE_INTEGER_VALUE, 0},
{":height", IMAGE_POSITIVE_INTEGER_VALUE, 0},
{":data", IMAGE_DONT_CHECK_VALUE_TYPE, 0},
- {":foreground", IMAGE_STRING_VALUE, 0},
- {":background", IMAGE_STRING_VALUE, 0},
+ {":foreground", IMAGE_STRING_OR_NIL_VALUE, 0},
+ {":background", IMAGE_STRING_OR_NIL_VALUE, 0},
{":ascent", IMAGE_ASCENT_VALUE, 0},
{":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0},
{":relief", IMAGE_INTEGER_VALUE, 0},
}
/* Get foreground and background colors, maybe allocate colors. */
- if (fmt[XBM_FOREGROUND].count)
+ if (fmt[XBM_FOREGROUND].count
+ && STRINGP (fmt[XBM_FOREGROUND].value))
foreground = x_alloc_image_color (f, img, fmt[XBM_FOREGROUND].value,
foreground);
- if (fmt[XBM_BACKGROUND].count)
+ if (fmt[XBM_BACKGROUND].count
+ && STRINGP (fmt[XBM_BACKGROUND].value))
background = x_alloc_image_color (f, img, fmt[XBM_BACKGROUND].value,
background);
{":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0},
{":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0},
{":mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0},
- {":foreground", IMAGE_STRING_VALUE, 0},
- {":background", IMAGE_STRING_VALUE, 0}
+ {":foreground", IMAGE_STRING_OR_NIL_VALUE, 0},
+ {":background", IMAGE_STRING_OR_NIL_VALUE, 0}
};
/* Structure describing the image type `pbm'. */
parse_image_spec (img->spec, fmt, PBM_LAST, Qpbm);
/* Get foreground and background colors, maybe allocate colors. */
- if (fmt[PBM_FOREGROUND].count)
+ if (fmt[PBM_FOREGROUND].count
+ && STRINGP (fmt[PBM_FOREGROUND].value))
fg = x_alloc_image_color (f, img, fmt[PBM_FOREGROUND].value, fg);
- if (fmt[PBM_BACKGROUND].count)
+ if (fmt[PBM_BACKGROUND].count
+ && STRINGP (fmt[PBM_BACKGROUND].value))
bg = x_alloc_image_color (f, img, fmt[PBM_BACKGROUND].value, bg);
for (y = 0; y < height; ++y)
XmListSetPos (list, item_pos);
}
- /* Process events until the user presses Cancel or OK. */
+ /* Process events until the user presses Cancel or OK. Block
+ and unblock input here so that we get a chance of processing
+ expose events. */
+ UNBLOCK_INPUT;
result = 0;
while (result == 0)
- XtAppProcessEvent (Xt_app_con, XtIMAll);
+ {
+ BLOCK_INPUT;
+ XtAppProcessEvent (Xt_app_con, XtIMAll);
+ UNBLOCK_INPUT;
+ }
+ BLOCK_INPUT;
/* Get the result. */
if (result == XmCR_OK)
staticpro (&Qcompound_text);
Qcancel_timer = intern ("cancel-timer");
staticpro (&Qcancel_timer);
+ Qwait_for_wm = intern ("wait-for-wm");
+ staticpro (&Qwait_for_wm);
/* This is the end of symbol initialization. */
/* Text property `display' should be nonsticky by default. */