#include "dispextern.h"
#include "keyboard.h"
#include "blockinput.h"
-#include <paths.h>
+#include <epaths.h>
#include "charset.h"
#include "fontset.h"
Lisp_Object Qright;
Lisp_Object Qmouse_color;
Lisp_Object Qnone;
+Lisp_Object Qouter_window_id;
Lisp_Object Qparent_id;
Lisp_Object Qscroll_bar_width;
Lisp_Object Qsuppress_icon;
{
if (NILP (frame))
{
- if (FRAME_X_P (selected_frame))
+ if (FRAME_X_P (selected_frame)
+ && FRAME_LIVE_P (selected_frame))
return FRAME_X_DISPLAY_INFO (selected_frame);
else if (x_display_list != 0)
return x_display_list;
fd = openp (Vx_bitmap_file_path, file, "", &found, 0);
if (fd < 0)
return -1;
+ /* XReadBitmapFile won't handle magic file names. */
+ if (fd == 0)
+ return -1;
close (fd);
filename = (char *) XSTRING (found)->data;
/* Attach the `x-frame-parameter' properties to
the Lisp symbol names of parameters relevant to X. */
+void
init_x_parm_symbols ()
{
int i;
int left_no_change = 0, top_no_change = 0;
int icon_left_no_change = 0, icon_top_no_change = 0;
+ struct gcpro gcpro1, gcpro2;
+
i = 0;
for (tail = alist; CONSP (tail); tail = Fcdr (tail))
i++;
values[i] = Fcdr (elt);
i++;
}
+ /* TAIL and ALIST are not used again below here. */
+ alist = tail = Qnil;
+ GCPRO2 (*parms, *values);
+ gcpro1.nvars = i;
+ gcpro2.nvars = i;
+
+ /* There is no need to gcpro LEFT, TOP, ICON_LEFT, or ICON_TOP,
+ because their values appear in VALUES and strings are not valid. */
top = left = Qunbound;
icon_left = icon_top = Qunbound;
&& ! (icon_left_no_change && icon_top_no_change))
x_wm_set_icon_position (f, XINT (icon_left), XINT (icon_top));
}
+
+ UNGCPRO;
}
/* Store the screen positions of frame F into XPTR and YPTR.
sprintf (buf, "%ld", (long) FRAME_X_WINDOW (f));
store_in_alist (alistptr, Qwindow_id,
build_string (buf));
+ sprintf (buf, "%ld", (long) FRAME_OUTER_WINDOW (f));
+ store_in_alist (alistptr, Qouter_window_id,
+ build_string (buf));
store_in_alist (alistptr, Qicon_name, f->icon_name);
FRAME_SAMPLE_VISIBILITY (f);
store_in_alist (alistptr, Qvisibility,
UNBLOCK_INPUT;
}
\f
-extern Lisp_Object x_new_font ();
-extern Lisp_Object x_new_fontset ();
-extern Lisp_Object Fquery_fontset ();
-
void
x_set_font (f, arg, oldval)
struct frame *f;
if (EQ (result, Qnil))
error ("Font `%s' is not defined", XSTRING (arg)->data);
else if (EQ (result, Qt))
- error ("the characters of the given font have varying widths");
+ error ("The characters of the given font have varying widths");
else if (STRINGP (result))
{
recompute_basic_faces (f);
/* Create and set up the X window for frame F. */
+void
x_window (f)
struct frame *f;
f->output_data.x->cursor_gc
= XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
(GCFont | GCForeground | GCBackground
- | GCFillStyle | GCStipple | GCLineWidth),
+ | GCFillStyle /* | GCStipple */ | GCLineWidth),
&gc_values);
/* Create the gray border tile used when the pointer is not in
UNBLOCK_INPUT;
}
\f
+void
syms_of_xfns ()
{
/* This is zero if not using X windows. */
staticpro (&Qvisibility);
Qwindow_id = intern ("window-id");
staticpro (&Qwindow_id);
+ Qouter_window_id = intern ("outer-window-id");
+ staticpro (&Qouter_window_id);
Qx_frame_parameter = intern ("x-frame-parameter");
staticpro (&Qx_frame_parameter);
Qx_resource_name = intern ("x-resource-name");