/* Functions for the X window system.
- Copyright (C) 1989, 1992 Free Software Foundation.
+ Copyright (C) 1989, 1992, 1993 Free Software Foundation.
This file is part of GNU Emacs.
#include "window.h"
#include "buffer.h"
#include "dispextern.h"
-#include "xscrollbar.h"
#include "keyboard.h"
#ifdef HAVE_X_WINDOWS
extern void abort ();
+#include <X11/bitmaps/gray>
+
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) > (b) ? (a) : (b))
/* Color of chars displayed in cursor box. */
Lisp_Object Vx_cursor_fore_pixel;
-/* If non-nil, use vertical bar cursor. */
-Lisp_Object Vbar_cursor;
-
/* The X Visual we are using for X windows (the default) */
Visual *screen_visual;
Lisp_Object Vmouse_depressed;
extern unsigned int x_mouse_x, x_mouse_y, x_mouse_grabbed;
-extern Lisp_Object unread_command_char;
/* Atom for indicating window state to the window manager. */
Atom Xatom_wm_change_state;
/* When emacs became the selection owner. */
extern Time x_begin_selection_own;
-/* The value of the current emacs selection. */
-extern Lisp_Object Vx_selection_value;
-
/* Emacs' selection property identifier. */
extern Atom Xatom_emacs_selection;
#else /* X10 */
-/* Default size of an Emacs window without scroll bar. */
+/* Default size of an Emacs window. */
static char *default_window = "=80x24+0+0";
#define MAXICID 80
Lisp_Object Qauto_raise;
Lisp_Object Qauto_lower;
Lisp_Object Qbackground_color;
+Lisp_Object Qbar;
Lisp_Object Qborder_color;
Lisp_Object Qborder_width;
+Lisp_Object Qbox;
Lisp_Object Qcursor_color;
+Lisp_Object Qcursor_type;
Lisp_Object Qfont;
Lisp_Object Qforeground_color;
Lisp_Object Qgeometry;
-Lisp_Object Qhorizontal_scroll_bar;
Lisp_Object Qicon_left;
Lisp_Object Qicon_top;
Lisp_Object Qicon_type;
Lisp_Object Qinternal_border_width;
Lisp_Object Qleft;
Lisp_Object Qmouse_color;
+Lisp_Object Qnone;
Lisp_Object Qparent_id;
Lisp_Object Qsuppress_icon;
Lisp_Object Qsuppress_initial_map;
Lisp_Object Qtop;
Lisp_Object Qundefined_color;
-Lisp_Object Qvertical_scroll_bar;
+Lisp_Object Qvertical_scroll_bars;
Lisp_Object Qwindow_id;
Lisp_Object Qx_frame_parameter;
/* The below are defined in frame.c. */
-extern Lisp_Object Qheight, Qminibuffer, Qname, Qnone, Qonly, Qwidth;
+extern Lisp_Object Qheight, Qminibuffer, Qname, Qonly, Qwidth;
extern Lisp_Object Qunsplittable;
extern Lisp_Object Vwindow_system_version;
return 0;
}
-/* Map an X window that implements a scroll bar to the Emacs frame it
- belongs to. Also store in *PART a symbol identifying which part of
- the scroll bar it is. */
-
-struct frame *
-x_window_to_scrollbar (wdesc, part_ptr, prefix_ptr)
- int wdesc;
- Lisp_Object *part_ptr;
- enum scroll_bar_prefix *prefix_ptr;
-{
- Lisp_Object tail, frame;
- struct frame *f;
-
- for (tail = Vframe_list; CONSP (tail); tail = XCONS (tail)->cdr)
- {
- frame = XCONS (tail)->car;
- if (XTYPE (frame) != Lisp_Frame)
- continue;
-
- f = XFRAME (frame);
- if (part_ptr == 0 && prefix_ptr == 0)
- return f;
-
- if (f->display.x->v_scrollbar == wdesc)
- {
- *part_ptr = Qvscrollbar_part;
- *prefix_ptr = VSCROLL_BAR_PREFIX;
- return f;
- }
- else if (f->display.x->v_slider == wdesc)
- {
- *part_ptr = Qvslider_part;
- *prefix_ptr = VSCROLL_SLIDER_PREFIX;
- return f;
- }
- else if (f->display.x->v_thumbup == wdesc)
- {
- *part_ptr = Qvthumbup_part;
- *prefix_ptr = VSCROLL_THUMBUP_PREFIX;
- return f;
- }
- else if (f->display.x->v_thumbdown == wdesc)
- {
- *part_ptr = Qvthumbdown_part;
- *prefix_ptr = VSCROLL_THUMBDOWN_PREFIX;
- return f;
- }
- else if (f->display.x->h_scrollbar == wdesc)
- {
- *part_ptr = Qhscrollbar_part;
- *prefix_ptr = HSCROLL_BAR_PREFIX;
- return f;
- }
- else if (f->display.x->h_slider == wdesc)
- {
- *part_ptr = Qhslider_part;
- *prefix_ptr = HSCROLL_SLIDER_PREFIX;
- return f;
- }
- else if (f->display.x->h_thumbleft == wdesc)
- {
- *part_ptr = Qhthumbleft_part;
- *prefix_ptr = HSCROLL_THUMBLEFT_PREFIX;
- return f;
- }
- else if (f->display.x->h_thumbright == wdesc)
- {
- *part_ptr = Qhthumbright_part;
- *prefix_ptr = HSCROLL_THUMBRIGHT_PREFIX;
- return f;
- }
- }
- return 0;
-}
\f
/* Connect the frame-parameter names for X frames
to the ways of passing the parameter values to the window system.
X_PARM_NAME,
X_PARM_AUTORAISE,
X_PARM_AUTOLOWER,
- X_PARM_VERT_SCROLLBAR,
- X_PARM_HORIZ_SCROLLBAR,
+ X_PARM_VERT_SCROLL_BAR,
};
void x_set_mouse_color ();
void x_set_cursor_color ();
void x_set_border_color ();
+void x_set_cursor_type ();
void x_set_icon_type ();
void x_set_font ();
void x_set_border_width ();
void x_explicitly_set_name ();
void x_set_autoraise ();
void x_set_autolower ();
-void x_set_vertical_scrollbar ();
-void x_set_horizontal_scrollbar ();
+void x_set_vertical_scroll_bars ();
static struct x_frame_parm_table x_frame_parms[] =
{
"mouse-color", x_set_mouse_color,
"cursor-color", x_set_cursor_color,
"border-color", x_set_border_color,
+ "cursor-type", x_set_cursor_type,
"icon-type", x_set_icon_type,
"font", x_set_font,
"border-width", x_set_border_width,
"internal-border-width", x_set_internal_border_width,
"name", x_explicitly_set_name,
- "autoraise", x_set_autoraise,
- "autolower", x_set_autolower,
- "vertical-scrollbar", x_set_vertical_scrollbar,
- "horizontal-scrollbar", x_set_horizontal_scrollbar,
+ "auto-raise", x_set_autoraise,
+ "auto-lower", x_set_autolower,
+ "vertical-scroll-bars", x_set_vertical_scroll_bars,
};
/* Attach the `x-frame-parameter' properties to
return WHITE_PIX_DEFAULT;
#ifdef HAVE_X11
- if (XFASTINT (x_screen_planes) == 1)
+ if (x_screen_planes == 1)
return def;
#else
if (DISPLAY_CELLS == 1)
f->display.x->foreground_pixel);
XSetBackground (x_current_display, f->display.x->reverse_gc,
f->display.x->foreground_pixel);
- if (f->display.x->v_scrollbar)
- {
- Pixmap up_arrow_pixmap, down_arrow_pixmap, slider_pixmap;
-
- XSetWindowBorder (x_current_display, f->display.x->v_scrollbar,
- f->display.x->foreground_pixel);
-
- slider_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- gray_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
- up_arrow_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- up_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
- down_arrow_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- down_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_thumbup,
- up_arrow_pixmap);
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_thumbdown,
- down_arrow_pixmap);
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_slider,
- slider_pixmap);
-
- XClearWindow (XDISPLAY f->display.x->v_thumbup);
- XClearWindow (XDISPLAY f->display.x->v_thumbdown);
- XClearWindow (XDISPLAY f->display.x->v_slider);
-
- XFreePixmap (x_current_display, down_arrow_pixmap);
- XFreePixmap (x_current_display, up_arrow_pixmap);
- XFreePixmap (x_current_display, slider_pixmap);
- }
- if (f->display.x->h_scrollbar)
- {
- Pixmap left_arrow_pixmap, right_arrow_pixmap, slider_pixmap;
-
- XSetWindowBorder (x_current_display, f->display.x->h_scrollbar,
- f->display.x->foreground_pixel);
-
- slider_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- gray_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- left_arrow_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- up_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
- right_arrow_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- down_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_slider,
- slider_pixmap);
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_thumbleft,
- left_arrow_pixmap);
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_thumbright,
- right_arrow_pixmap);
-
- XClearWindow (XDISPLAY f->display.x->h_thumbleft);
- XClearWindow (XDISPLAY f->display.x->h_thumbright);
- XClearWindow (XDISPLAY f->display.x->h_slider);
-
- XFreePixmap (x_current_display, slider_pixmap);
- XFreePixmap (x_current_display, left_arrow_pixmap);
- XFreePixmap (x_current_display, right_arrow_pixmap);
- }
UNBLOCK_INPUT;
#endif /* HAVE_X11 */
- if (f->visible)
+ if (FRAME_VISIBLE_P (f))
redraw_frame (f);
}
}
XSetWindowBackground (x_current_display, FRAME_X_WINDOW (f),
f->display.x->background_pixel);
- /* Scroll bars. */
- if (f->display.x->v_scrollbar)
- {
- Pixmap up_arrow_pixmap, down_arrow_pixmap, slider_pixmap;
-
- XSetWindowBackground (x_current_display, f->display.x->v_scrollbar,
- f->display.x->background_pixel);
-
- slider_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- gray_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
- up_arrow_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- up_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
- down_arrow_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- down_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_thumbup,
- up_arrow_pixmap);
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_thumbdown,
- down_arrow_pixmap);
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_slider,
- slider_pixmap);
-
- XClearWindow (XDISPLAY f->display.x->v_thumbup);
- XClearWindow (XDISPLAY f->display.x->v_thumbdown);
- XClearWindow (XDISPLAY f->display.x->v_slider);
-
- XFreePixmap (x_current_display, down_arrow_pixmap);
- XFreePixmap (x_current_display, up_arrow_pixmap);
- XFreePixmap (x_current_display, slider_pixmap);
- }
- if (f->display.x->h_scrollbar)
- {
- Pixmap left_arrow_pixmap, right_arrow_pixmap, slider_pixmap;
-
- XSetWindowBackground (x_current_display, f->display.x->h_scrollbar,
- f->display.x->background_pixel);
-
- slider_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- gray_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- left_arrow_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- up_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
- right_arrow_pixmap =
- XCreatePixmapFromBitmapData (XDISPLAY FRAME_X_WINDOW (f),
- down_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_slider,
- slider_pixmap);
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_thumbleft,
- left_arrow_pixmap);
- XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_thumbright,
- right_arrow_pixmap);
-
- XClearWindow (XDISPLAY f->display.x->h_thumbleft);
- XClearWindow (XDISPLAY f->display.x->h_thumbright);
- XClearWindow (XDISPLAY f->display.x->h_slider);
-
- XFreePixmap (x_current_display, slider_pixmap);
- XFreePixmap (x_current_display, left_arrow_pixmap);
- XFreePixmap (x_current_display, right_arrow_pixmap);
- }
#else
temp = XMakeTile (f->display.x->background_pixel);
XChangeBackground (FRAME_X_WINDOW (f), temp);
#endif /* not HAVE_X11 */
UNBLOCK_INPUT;
- if (f->visible)
+ if (FRAME_VISIBLE_P (f))
redraw_frame (f);
}
}
}
else
cursor = XCreateFontCursor (x_current_display, XC_xterm);
+ x_check_errors ("bad text pointer cursor: %s");
if (!EQ (Qnil, Vx_nontext_pointer_shape))
{
}
else
nontext_cursor = XCreateFontCursor (x_current_display, XC_left_ptr);
+ x_check_errors ("bad nontext pointer cursor: %s");
if (!EQ (Qnil, Vx_mode_pointer_shape))
{
UNBLOCK_INPUT;
#endif /* HAVE_X11 */
- if (f->visible)
+ if (FRAME_VISIBLE_P (f))
{
x_display_cursor (f, 0);
x_display_cursor (f, 1);
#ifdef HAVE_X11
XSetWindowBorder (x_current_display, FRAME_X_WINDOW (f),
pix);
- if (f->display.x->h_scrollbar)
- XSetWindowBorder (x_current_display, f->display.x->h_slider,
- pix);
- if (f->display.x->v_scrollbar)
- XSetWindowBorder (x_current_display, f->display.x->v_slider,
- pix);
#else
if (pix < 0)
- temp = XMakePixmap ((Bitmap) XStoreBitmap (16, 16, gray_bits),
+ temp = XMakePixmap ((Bitmap) XStoreBitmap (gray_width, gray_height,
+ gray_bits),
BLACK_PIX_DEFAULT, WHITE_PIX_DEFAULT);
else
temp = XMakeTile (pix);
#endif /* not HAVE_X11 */
UNBLOCK_INPUT;
- if (f->visible)
+ if (FRAME_VISIBLE_P (f))
redraw_frame (f);
}
}
+void
+x_set_cursor_type (f, arg, oldval)
+ FRAME_PTR f;
+ Lisp_Object arg, oldval;
+{
+ if (EQ (arg, Qbar))
+ FRAME_DESIRED_CURSOR (f) = bar_cursor;
+ else if (EQ (arg, Qbox))
+ FRAME_DESIRED_CURSOR (f) = filled_box_cursor;
+ else
+ error
+ ("the `cursor-type' frame parameter should be either `bar' or `box'");
+
+ /* Make sure the cursor gets redrawn. This is overkill, but how
+ often do people change cursor types? */
+ update_mode_lines++;
+}
+
void
x_set_icon_type (f, arg, oldval)
struct frame *f;
if (NILP (arg))
result = x_text_icon (f, 0);
else
- result = x_bitmap_icon (f, 0);
+ result = x_bitmap_icon (f);
if (result)
{
/* If the window was unmapped (and its icon was mapped),
the new icon is not mapped, so map the window in its stead. */
- if (f->visible)
+ if (FRAME_VISIBLE_P (f))
XMapWindow (XDISPLAY FRAME_X_WINDOW (f));
XFlushQueue ();
}
}
-void x_user_set_name (f, arg, oldval)
- struct frame *f;
- Lisp_Object arg, oldval;
-{
-}
-
/* Change the name of frame F to ARG. If ARG is nil, set F's name to
x_id_name.
/* If we're switching from explicit to implicit, we had better
update the mode lines and thereby update the title. */
if (f->explicit_name && NILP (name))
- update_mode_lines;
+ update_mode_lines = 1;
f->explicit_name = ! NILP (name);
}
{
f->auto_lower = !EQ (Qnil, arg);
}
+
+void
+x_set_vertical_scroll_bars (f, arg, oldval)
+ struct frame *f;
+ Lisp_Object arg, oldval;
+{
+ if (NILP (arg) != ! FRAME_HAS_VERTICAL_SCROLL_BARS (f))
+ {
+ FRAME_HAS_VERTICAL_SCROLL_BARS (f) = ! NILP (arg);
+
+ /* We set this parameter before creating the X window for the
+ frame, so we can get the geometry right from the start.
+ However, if the window hasn't been created yet, we shouldn't
+ call x_set_window_size. */
+ if (FRAME_X_WINDOW (f))
+ x_set_window_size (f, FRAME_WIDTH (f), FRAME_HEIGHT (f));
+ }
+}
\f
#ifdef HAVE_X11
int n_faces;
extern char *x_get_string_resource ();
extern XrmDatabase x_load_resources ();
-DEFUN ("x-get-resource", Fx_get_resource, Sx_get_resource, 1, 3, 0,
- "Retrieve the value of ATTRIBUTE from the X defaults database. This\n\
-searches using a key of the form \"INSTANCE.ATTRIBUTE\", with class\n\
-\"Emacs\", where INSTANCE is the name under which Emacs was invoked.\n\
+DEFUN ("x-get-resource", Fx_get_resource, Sx_get_resource, 2, 4, 0,
+ "Return the value of ATTRIBUTE, of class CLASS, from the X defaults database.\n\
+This uses `INSTANCE.ATTRIBUTE' as the key and `Emacs.CLASS' as the\n\
+class, where INSTANCE is the name under which Emacs was invoked.\n\
\n\
-Optional arguments COMPONENT and CLASS specify the component for which\n\
-we should look up ATTRIBUTE. When specified, Emacs searches using a\n\
-key of the form INSTANCE.COMPONENT.ATTRIBUTE, with class \"Emacs.CLASS\".")
- (attribute, name, class)
- Lisp_Object attribute, name, class;
+The optional arguments COMPONENT and SUBCLASS add to the key and the\n\
+class, respectively. You must specify both of them or neither.\n\
+If you specify them, the key is `INSTANCE.COMPONENT.ATTRIBUTE'\n\
+and the class is `Emacs.CLASS.SUBCLASS'.")
+ (attribute, class, component, subclass)
+ Lisp_Object attribute, class, component, subclass;
{
register char *value;
char *name_key;
char *class_key;
CHECK_STRING (attribute, 0);
- if (!NILP (name))
- CHECK_STRING (name, 1);
- if (!NILP (class))
- CHECK_STRING (class, 2);
- if (NILP (name) != NILP (class))
- error ("x-get-resource: must specify both NAME and CLASS or neither");
-
- if (NILP (name))
- {
- name_key = (char *) alloca (XSTRING (invocation_name)->size + 1
- + XSTRING (attribute)->size + 1);
+ CHECK_STRING (class, 0);
+
+ if (!NILP (component))
+ CHECK_STRING (component, 1);
+ if (!NILP (subclass))
+ CHECK_STRING (subclass, 2);
+ if (NILP (component) != NILP (subclass))
+ error ("x-get-resource: must specify both COMPONENT and SUBCLASS or neither");
+
+ if (NILP (component))
+ {
+ /* Allocate space for the components, the dots which separate them,
+ and the final '\0'. */
+ name_key = (char *) alloca (XSTRING (invocation_name)->size
+ + XSTRING (attribute)->size
+ + 2);
+ class_key = (char *) alloca ((sizeof (EMACS_CLASS) - 1)
+ + XSTRING (class)->size
+ + 2);
sprintf (name_key, "%s.%s",
XSTRING (invocation_name)->data,
XSTRING (attribute)->data);
- class_key = EMACS_CLASS;
+ sprintf (class_key, "%s.%s",
+ EMACS_CLASS,
+ XSTRING (class)->data);
}
else
{
- name_key = (char *) alloca (XSTRING (invocation_name)->size + 1
- + XSTRING (name)->size + 1
- + XSTRING (attribute)->size + 1);
+ name_key = (char *) alloca (XSTRING (invocation_name)->size
+ + XSTRING (component)->size
+ + XSTRING (attribute)->size
+ + 3);
- class_key = (char *) alloca (sizeof (EMACS_CLASS)
- + XSTRING (class)->size + 1);
+ class_key = (char *) alloca ((sizeof (EMACS_CLASS) - 1)
+ + XSTRING (class)->size
+ + XSTRING (subclass)->size
+ + 3);
sprintf (name_key, "%s.%s.%s",
XSTRING (invocation_name)->data,
- XSTRING (name)->data,
+ XSTRING (component)->data,
XSTRING (attribute)->data);
sprintf (class_key, "%s.%s",
- XSTRING (invocation_name)->data,
- XSTRING (class)->data);
+ EMACS_CLASS,
+ XSTRING (class)->data,
+ XSTRING (subclass)->data);
}
value = x_get_string_resource (xrdb, name_key, class_key);
return (Qnil);
}
-#define Fx_get_resource(attribute, name, class) Fx_get_default(attribute)
+#define Fx_get_resource(attribute, class, component, subclass) \
+ Fx_get_default(attribute)
#endif /* X10 */
/* Return the value of parameter PARAM.
First search ALIST, then Vdefault_frame_alist, then the X defaults
- database, using ATTRIBUTE as the attribute name.
+ database, using ATTRIBUTE as the attribute name and CLASS as its class.
Convert the resource to the type specified by desired_type.
and don't let it get stored in any lisp-visible variables! */
static Lisp_Object
-x_get_arg (alist, param, attribute, type)
+x_get_arg (alist, param, attribute, class, type)
Lisp_Object alist, param;
char *attribute;
+ char *class;
enum resource_types type;
{
register Lisp_Object tem;
if (attribute)
{
- tem = Fx_get_resource (build_string (attribute), Qnil, Qnil);
+ tem = Fx_get_resource (build_string (attribute),
+ build_string (class),
+ Qnil, Qnil);
if (NILP (tem))
return Qunbound;
If that is not found either, use the value DEFLT. */
static Lisp_Object
-x_default_parameter (f, alist, prop, deflt, xprop, type)
+x_default_parameter (f, alist, prop, deflt, xprop, xclass, type)
struct frame *f;
Lisp_Object alist;
Lisp_Object prop;
Lisp_Object deflt;
char *xprop;
+ char *xclass;
enum resource_types type;
{
Lisp_Object tem;
- tem = x_get_arg (alist, prop, xprop, type);
+ tem = x_get_arg (alist, prop, xprop, xclass, type);
if (EQ (tem, Qunbound))
tem = deflt;
x_set_frame_parameters (f, Fcons (Fcons (prop, tem), Qnil));
"Parse an X-style geometry string STRING.\n\
Returns an alist of the form ((top . TOP), (left . LEFT) ... ).")
(string)
+ Lisp_Object string;
{
int geometry, x, y;
unsigned int width, height;
f->display.x->top_pos = 1;
f->display.x->left_pos = 1;
- tem0 = x_get_arg (parms, Qheight, 0, number);
- tem1 = x_get_arg (parms, Qwidth, 0, number);
+ tem0 = x_get_arg (parms, Qheight, 0, 0, number);
+ tem1 = x_get_arg (parms, Qwidth, 0, 0, number);
if (! EQ (tem0, Qunbound) && ! EQ (tem1, Qunbound))
{
CHECK_NUMBER (tem0, 0);
else if (! EQ (tem0, Qunbound) || ! EQ (tem1, Qunbound))
error ("Must specify *both* height and width");
- f->display.x->pixel_width = (FONT_WIDTH (f->display.x->font) * f->width
- + 2 * f->display.x->internal_border_width);
- f->display.x->pixel_height = (FONT_HEIGHT (f->display.x->font) * f->height
- + 2 * f->display.x->internal_border_width);
+ f->display.x->vertical_scroll_bar_extra =
+ (FRAME_HAS_VERTICAL_SCROLL_BARS (f)
+ ? VERTICAL_SCROLL_BAR_PIXEL_WIDTH (f)
+ : 0);
+ f->display.x->pixel_width = CHAR_TO_PIXEL_WIDTH (f, f->width);
+ f->display.x->pixel_height = CHAR_TO_PIXEL_HEIGHT (f, f->height);
- tem0 = x_get_arg (parms, Qtop, 0, number);
- tem1 = x_get_arg (parms, Qleft, 0, number);
+ tem0 = x_get_arg (parms, Qtop, 0, 0, number);
+ tem1 = x_get_arg (parms, Qleft, 0, 0, number);
if (! EQ (tem0, Qunbound) && ! EQ (tem1, Qunbound))
{
CHECK_NUMBER (tem0, 0);
class_hints.res_class = EMACS_CLASS;
XSetClassHint (x_current_display, FRAME_X_WINDOW (f), &class_hints);
+ /* This indicates that we use the "Passive Input" input model.
+ Unless we do this, we don't get the Focus{In,Out} events that we
+ need to draw the cursor correctly. Accursed bureaucrats.
+ XWhipsAndChains (x_current_display, IronMaiden, &TheRack); */
+
+ f->display.x->wm_hints.input = True;
+ f->display.x->wm_hints.flags |= InputHint;
+ XSetWMHints (x_current_display, FRAME_X_WINDOW (f), &f->display.x->wm_hints);
+
/* x_set_name normally ignores requests to set the name if the
requested name is the same as the current name. This is the one
place where that assumption isn't correct; f->name is set, but
the X server hasn't been told. */
{
Lisp_Object name = f->name;
+ int explicit = f->explicit_name;
f->name = Qnil;
- x_implicitly_set_name (f, name, Qnil);
+ f->explicit_name = 0;
+ x_set_name (f, name, explicit);
}
XDefineCursor (XDISPLAY FRAME_X_WINDOW (f),
/* Set the position of the icon. Note that twm groups all
icons in an icon window. */
- icon_x = x_get_arg (parms, Qicon_left, 0, number);
- icon_y = x_get_arg (parms, Qicon_top, 0, number);
+ icon_x = x_get_arg (parms, Qicon_left, 0, 0, number);
+ icon_y = x_get_arg (parms, Qicon_top, 0, 0, number);
if (!EQ (icon_x, Qunbound) && !EQ (icon_y, Qunbound))
{
CHECK_NUMBER (icon_x, 0);
/* Start up iconic or window? */
x_wm_set_window_state (f,
- (EQ (x_get_arg (parms, Qiconic_startup, 0, boolean),
+ (EQ (x_get_arg (parms, Qiconic_startup,
+ 0, 0, boolean),
Qt)
? IconicState
: NormalState));
the frame. Since this depends on the frame's pixel values,
this must be done on a per-frame basis. */
f->display.x->border_tile =
- XCreatePixmap (x_current_display, ROOT_WINDOW, 16, 16,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
- gc_values.foreground = f->display.x->foreground_pixel;
- gc_values.background = f->display.x->background_pixel;
- temp_gc = XCreateGC (x_current_display,
- (Drawable) f->display.x->border_tile,
- GCForeground | GCBackground, &gc_values);
-
- /* These are things that should be determined by the server, in
- Fx_open_connection */
- tileimage.height = 16;
- tileimage.width = 16;
- tileimage.xoffset = 0;
- tileimage.format = XYBitmap;
- tileimage.data = gray_bits;
- tileimage.byte_order = LSBFirst;
- tileimage.bitmap_unit = 8;
- tileimage.bitmap_bit_order = LSBFirst;
- tileimage.bitmap_pad = 8;
- tileimage.bytes_per_line = (16 + 7) >> 3;
- tileimage.depth = 1;
- XPutImage (x_current_display, f->display.x->border_tile, temp_gc,
- &tileimage, 0, 0, 0, 0, 16, 16);
- XFreeGC (x_current_display, temp_gc);
+ XCreatePixmapFromBitmapData
+ (x_current_display, ROOT_WINDOW,
+ gray_bits, gray_width, gray_height,
+ f->display.x->foreground_pixel,
+ f->display.x->background_pixel,
+ DefaultDepth (x_current_display, XDefaultScreen (x_current_display)));
}
#endif /* HAVE_X11 */
if (x_current_display == 0)
error ("X windows are not in use or not initialized");
- name = x_get_arg (parms, Qname, "Title", string);
- if (EQ (name, Qunbound) || NILP (name))
- name = build_string (x_id_name);
- if (XTYPE (name) != Lisp_String)
+ name = x_get_arg (parms, Qname, "title", "Title", string);
+ if (XTYPE (name) != Lisp_String
+ && ! EQ (name, Qunbound)
+ && ! NILP (name))
error ("x-create-frame: name parameter must be a string");
- tem = x_get_arg (parms, Qminibuffer, 0, symbol);
+ tem = x_get_arg (parms, Qminibuffer, 0, 0, symbol);
if (EQ (tem, Qnone) || NILP (tem))
f = make_frame_without_minibuffer (Qnil);
else if (EQ (tem, Qonly))
else
f = make_frame (1);
- /* Set the name; the functions to which we pass f expect the
- name to be set. */
- XSET (f->name, Lisp_String, name);
+ /* Note that X Windows does support scroll bars. */
+ FRAME_CAN_HAVE_SCROLL_BARS (f) = 1;
+
+ /* Set the name; the functions to which we pass f expect the name to
+ be set. */
+ if (EQ (name, Qunbound) || NILP (name))
+ {
+ f->name = build_string (x_id_name);
+ f->explicit_name = 0;
+ }
+ else
+ {
+ f->name = name;
+ f->explicit_name = 1;
+ }
XSET (frame, Lisp_Frame, f);
f->output_method = output_x_window;
/* Extract the window parameters from the supplied values
that are needed to determine window geometry. */
- x_default_parameter (f, parms, Qfont,
- build_string ("9x15"), "font", string);
- x_default_parameter (f, parms, Qbackground_color,
- build_string ("white"), "background", string);
- x_default_parameter (f, parms, Qborder_width,
- make_number (2), "BorderWidth", number);
- /* This defaults to 2 in order to match XTerms. */
- x_default_parameter (f, parms, Qinternal_border_width,
- make_number (2), "InternalBorderWidth", number);
+ x_default_parameter (f, parms, Qfont, build_string ("9x15"),
+ "font", "Font", string);
+ x_default_parameter (f, parms, Qborder_width, make_number (2),
+ "borderwidth", "BorderWidth", number);
+ /* This defaults to 2 in order to match xterm. */
+ x_default_parameter (f, parms, Qinternal_border_width, make_number (2),
+ "internalBorderWidth", "BorderWidth", number);
+ x_default_parameter (f, parms, Qvertical_scroll_bars, Qt,
+ "verticalScrollBars", "ScrollBars", boolean);
/* Also do the stuff which must be set before the window exists. */
- x_default_parameter (f, parms, Qforeground_color,
- build_string ("black"), "foreground", string);
- x_default_parameter (f, parms, Qmouse_color,
- build_string ("black"), "mouse", string);
- x_default_parameter (f, parms, Qcursor_color,
- build_string ("black"), "cursor", string);
- x_default_parameter (f, parms, Qborder_color,
- build_string ("black"), "border", string);
-
- /* When XSetWMHints eventually gets called, this will indicate that
- we use the "Passive Input" input model. Unless we do this, we
- don't get the Focus{In,Out} events that we need to draw the
- cursor correctly. Accursed bureaucrats.
-
- We set this here and leave it, because we know, being decidedly
- non-humble programmers (nay, weigh'd low by our hubris!), that
- Fx_create_frame calls x_icon which begat x_wm_set_window_state
- which begat XSetWMHints, which will get this information to the
- right parties. -JimB
-
- XWhipsAndChains (x_current_display, IronMaiden, &TheRack); */
-
- f->display.x->wm_hints.input = True;
- f->display.x->wm_hints.flags |= InputHint;
+ x_default_parameter (f, parms, Qforeground_color, build_string ("black"),
+ "foreground", "Foreground", string);
+ x_default_parameter (f, parms, Qbackground_color, build_string ("white"),
+ "background", "Background", string);
+ x_default_parameter (f, parms, Qmouse_color, build_string ("black"),
+ "pointerColor", "Foreground", string);
+ x_default_parameter (f, parms, Qcursor_color, build_string ("black"),
+ "cursorColor", "Foreground", string);
+ x_default_parameter (f, parms, Qborder_color, build_string ("black"),
+ "borderColor", "BorderColor", string);
f->display.x->parent_desc = ROOT_WINDOW;
window_prompting = x_figure_window_size (f, parms);
/* We need to do this after creating the X window, so that the
icon-creation functions can say whose icon they're describing. */
- x_default_parameter (f, parms, Qicon_type, Qnil, "IconType", symbol);
+ x_default_parameter (f, parms, Qicon_type, Qnil,
+ "iconType", "IconType", symbol);
- x_default_parameter (f, parms, Qauto_raise, Qnil, "AutoRaise", boolean);
- x_default_parameter (f, parms, Qauto_lower, Qnil, "AutoLower", boolean);
+ x_default_parameter (f, parms, Qauto_raise, Qnil,
+ "autoRaise", "AutoRaiseLower", boolean);
+ x_default_parameter (f, parms, Qauto_lower, Qnil,
+ "autoLower", "AutoRaiseLower", boolean);
+ x_default_parameter (f, parms, Qcursor_type, Qbox,
+ "cursorType", "CursorType", symbol);
/* Dimensions, especially f->height, must be done via change_frame_size.
Change will not be effected unless different from the current
x_wm_set_size_hint (f, window_prompting);
UNBLOCK_INPUT;
- tem = x_get_arg (parms, Qunsplittable, 0, boolean);
+ tem = x_get_arg (parms, Qunsplittable, 0, 0, boolean);
f->no_split = minibuffer_only || EQ (tem, Qt);
- /* Now handle the rest of the parameters. */
- x_default_parameter (f, parms, Qhorizontal_scroll_bar,
- Qnil, "HScrollBar", boolean);
- x_default_parameter (f, parms, Qvertical_scroll_bar,
- Qnil, "VScrollBar", boolean);
-
/* Make the window appear on the frame and enable display. */
- if (!EQ (x_get_arg (parms, Qsuppress_initial_map, 0, boolean), Qt))
+ if (!EQ (x_get_arg (parms, Qsuppress_initial_map, 0, 0, boolean), Qt))
x_make_frame_visible (f);
return frame;
name = Fassq (Qname, parms);
- tem = x_get_arg (parms, Qminibuffer, 0, symbol);
+ tem = x_get_arg (parms, Qminibuffer, 0, 0, symbol);
if (EQ (tem, Qnone))
f = make_frame_without_minibuffer (Qnil);
else if (EQ (tem, Qonly))
/* Extract some window parameters from the supplied values.
These are the parameters that affect window geometry. */
- tem = x_get_arg (parms, Qfont, "BodyFont", string);
+ tem = x_get_arg (parms, Qfont, "BodyFont", 0, string);
if (EQ (tem, Qunbound))
tem = build_string ("9x15");
x_set_font (f, tem, Qnil);
x_default_parameter (f, parms, Qborder_color,
- build_string ("black"), "Border", string);
+ build_string ("black"), "Border", 0, string);
x_default_parameter (f, parms, Qbackground_color,
- build_string ("white"), "Background", string);
+ build_string ("white"), "Background", 0, string);
x_default_parameter (f, parms, Qforeground_color,
- build_string ("black"), "Foreground", string);
+ build_string ("black"), "Foreground", 0, string);
x_default_parameter (f, parms, Qmouse_color,
- build_string ("black"), "Mouse", string);
+ build_string ("black"), "Mouse", 0, string);
x_default_parameter (f, parms, Qcursor_color,
- build_string ("black"), "Cursor", string);
+ build_string ("black"), "Cursor", 0, string);
x_default_parameter (f, parms, Qborder_width,
- make_number (2), "BorderWidth", number);
+ make_number (2), "BorderWidth", 0, number);
x_default_parameter (f, parms, Qinternal_border_width,
- make_number (4), "InternalBorderWidth", number);
+ make_number (4), "InternalBorderWidth", 0, number);
x_default_parameter (f, parms, Qauto_raise,
- Qnil, "AutoRaise", boolean);
+ Qnil, "AutoRaise", 0, boolean);
- hscroll = EQ (x_get_arg (parms, Qhorizontal_scroll_bar, 0, boolean), Qt);
- vscroll = EQ (x_get_arg (parms, Qvertical_scroll_bar, 0, boolean), Qt);
+ hscroll = EQ (x_get_arg (parms, Qhorizontal_scroll_bar, 0, 0, boolean), Qt);
+ vscroll = EQ (x_get_arg (parms, Qvertical_scroll_bar, 0, 0, boolean), Qt);
if (f->display.x->internal_border_width < 0)
f->display.x->internal_border_width = 0;
- tem = x_get_arg (parms, Qwindow_id, 0, number);
+ tem = x_get_arg (parms, Qwindow_id, 0, 0, number);
if (!EQ (tem, Qunbound))
{
WINDOWINFO_TYPE wininfo;
free (children);
UNBLOCK_INPUT;
- height = (wininfo.height - 2 * f->display.x->internal_border_width)
- / FONT_HEIGHT (f->display.x->font);
- width = (wininfo.width - 2 * f->display.x->internal_border_width)
- / FONT_WIDTH (f->display.x->font);
+ height = PIXEL_TO_CHAR_HEIGHT (f, wininfo.height);
+ width = PIXEL_TO_CHAR_WIDTH (f, wininfo.width);
f->display.x->left_pos = wininfo.x;
f->display.x->top_pos = wininfo.y;
- f->visible = wininfo.mapped != 0;
+ FRAME_SET_VISIBILITY (f, wininfo.mapped != 0);
f->display.x->border_width = wininfo.bdrwidth;
f->display.x->parent_desc = parent;
}
else
{
- tem = x_get_arg (parms, Qparent_id, 0, number);
+ tem = x_get_arg (parms, Qparent_id, 0, 0, number);
if (!EQ (tem, Qunbound))
{
CHECK_NUMBER (tem, 0);
parent = (Window) XINT (tem);
}
f->display.x->parent_desc = parent;
- tem = x_get_arg (parms, Qheight, 0, number);
+ tem = x_get_arg (parms, Qheight, 0, 0, number);
if (EQ (tem, Qunbound))
{
- tem = x_get_arg (parms, Qwidth, 0, number);
+ tem = x_get_arg (parms, Qwidth, 0, 0, number);
if (EQ (tem, Qunbound))
{
- tem = x_get_arg (parms, Qtop, 0, number);
+ tem = x_get_arg (parms, Qtop, 0, 0, number);
if (EQ (tem, Qunbound))
- tem = x_get_arg (parms, Qleft, 0, number);
+ tem = x_get_arg (parms, Qleft, 0, 0, number);
}
}
/* Now TEM is Qunbound if no edge or size was specified.
In that case, we must do rubber-banding. */
if (EQ (tem, Qunbound))
{
- tem = x_get_arg (parms, Qgeometry, 0, number);
+ tem = x_get_arg (parms, Qgeometry, 0, 0, number);
x_rubber_band (f,
&f->display.x->left_pos, &f->display.x->top_pos,
&width, &height,
{
/* Here if at least one edge or size was specified.
Demand that they all were specified, and use them. */
- tem = x_get_arg (parms, Qheight, 0, number);
+ tem = x_get_arg (parms, Qheight, 0, 0, number);
if (EQ (tem, Qunbound))
error ("Height not specified");
CHECK_NUMBER (tem, 0);
height = XINT (tem);
- tem = x_get_arg (parms, Qwidth, 0, number);
+ tem = x_get_arg (parms, Qwidth, 0, 0, number);
if (EQ (tem, Qunbound))
error ("Width not specified");
CHECK_NUMBER (tem, 0);
width = XINT (tem);
- tem = x_get_arg (parms, Qtop, 0, number);
+ tem = x_get_arg (parms, Qtop, 0, 0, number);
if (EQ (tem, Qunbound))
error ("Top position not specified");
CHECK_NUMBER (tem, 0);
f->display.x->left_pos = XINT (tem);
- tem = x_get_arg (parms, Qleft, 0, number);
+ tem = x_get_arg (parms, Qleft, 0, 0, number);
if (EQ (tem, Qunbound))
error ("Left position not specified");
CHECK_NUMBER (tem, 0);
f->display.x->top_pos = XINT (tem);
}
- pixelwidth = (width * FONT_WIDTH (f->display.x->font)
- + 2 * f->display.x->internal_border_width
- + (!NILP (vscroll) ? VSCROLL_WIDTH : 0));
- pixelheight = (height * FONT_HEIGHT (f->display.x->font)
- + 2 * f->display.x->internal_border_width
- + (!NILP (hscroll) ? HSCROLL_HEIGHT : 0));
+ pixelwidth = CHAR_TO_PIXEL_WIDTH (f, width);
+ pixelheight = CHAR_TO_PIXEL_HEIGHT (f, height);
BLOCK_INPUT;
FRAME_X_WINDOW (f)
/* Now override the defaults with all the rest of the specified
parms. */
- tem = x_get_arg (parms, Qunsplittable, 0, boolean);
+ tem = x_get_arg (parms, Qunsplittable, 0, 0, boolean);
f->no_split = minibuffer_only || EQ (tem, Qt);
/* Do not create an icon window if the caller says not to */
- if (!EQ (x_get_arg (parms, Qsuppress_icon, 0, boolean), Qt)
+ if (!EQ (x_get_arg (parms, Qsuppress_icon, 0, 0, boolean), Qt)
|| f->display.x->parent_desc != ROOT_WINDOW)
{
x_text_icon (f, iconidentity);
x_default_parameter (f, parms, Qicon_type, Qnil,
- "BitmapIcon", symbol);
+ "BitmapIcon", 0, symbol);
}
/* Tell the X server the previously set values of the
Fmodify_frame_parameters (frame, parms);
- if (!NILP (vscroll))
- install_vertical_scrollbar (f, pixelwidth, pixelheight);
- if (!NILP (hscroll))
- install_horizontal_scrollbar (f, pixelwidth, pixelheight);
-
/* Make the window appear on the frame and enable display. */
- if (!EQ (x_get_arg (parms, Qsuppress_initial_map, 0, boolean), Qt))
+ if (!EQ (x_get_arg (parms, Qsuppress_initial_map, 0, 0, boolean), Qt))
x_make_window_visible (f);
- FRAME_GARBAGED (f);
+ SET_FRAME_GARBAGED (f);
return frame;
#endif /* X10 */
}
#endif /* not HAVE_X11 */
\f
-/* Set whether frame F has a horizontal scroll bar.
- VAL is t or nil to specify it. */
-
-static void
-x_set_horizontal_scrollbar (f, val, oldval)
- struct frame *f;
- Lisp_Object val, oldval;
-{
- if (!NILP (val))
- {
- if (FRAME_X_WINDOW (f) != 0)
- {
- BLOCK_INPUT;
- f->display.x->h_scrollbar_height = HSCROLL_HEIGHT;
- x_set_window_size (f, f->width, f->height);
- install_horizontal_scrollbar (f);
- SET_FRAME_GARBAGED (f);
- UNBLOCK_INPUT;
- }
- }
- else
- if (f->display.x->h_scrollbar)
- {
- BLOCK_INPUT;
- f->display.x->h_scrollbar_height = 0;
- XDestroyWindow (XDISPLAY f->display.x->h_scrollbar);
- f->display.x->h_scrollbar = 0;
- x_set_window_size (f, f->width, f->height);
- f->garbaged++;
- frame_garbaged++;
- BLOCK_INPUT;
- }
-}
-
-/* Set whether frame F has a vertical scroll bar.
- VAL is t or nil to specify it. */
-
-static void
-x_set_vertical_scrollbar (f, val, oldval)
- struct frame *f;
- Lisp_Object val, oldval;
-{
- if (!NILP (val))
- {
- if (FRAME_X_WINDOW (f) != 0)
- {
- BLOCK_INPUT;
- f->display.x->v_scrollbar_width = VSCROLL_WIDTH;
- x_set_window_size (f, f->width, f->height);
- install_vertical_scrollbar (f);
- SET_FRAME_GARBAGED (f);
- UNBLOCK_INPUT;
- }
- }
- else
- if (f->display.x->v_scrollbar != 0)
- {
- BLOCK_INPUT;
- f->display.x->v_scrollbar_width = 0;
- XDestroyWindow (XDISPLAY f->display.x->v_scrollbar);
- f->display.x->v_scrollbar = 0;
- x_set_window_size (f, f->width, f->height);
- SET_FRAME_GARBAGED (f);
- UNBLOCK_INPUT;
- }
-}
-\f
-/* Create the X windows for a vertical scroll bar
- for a frame X that already has an X window but no scroll bar. */
-
-static void
-install_vertical_scrollbar (f)
- struct frame *f;
-{
- int ibw = f->display.x->internal_border_width;
- Window parent;
- XColor fore_color, back_color;
- Pixmap up_arrow_pixmap, down_arrow_pixmap, slider_pixmap;
- int pix_x, pix_y, width, height, border;
-
- height = f->display.x->pixel_height - ibw - 2;
- width = VSCROLL_WIDTH - 2;
- pix_x = f->display.x->pixel_width - ibw/2;
- pix_y = ibw / 2;
- border = 1;
-
-#ifdef HAVE_X11
- up_arrow_pixmap =
- XCreatePixmapFromBitmapData (x_current_display, FRAME_X_WINDOW (f),
- up_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- down_arrow_pixmap =
- XCreatePixmapFromBitmapData (x_current_display, FRAME_X_WINDOW (f),
- down_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- slider_pixmap =
- XCreatePixmapFromBitmapData (x_current_display, FRAME_X_WINDOW (f),
- gray_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- /* These cursor shapes will be installed when the mouse enters
- the appropriate window. */
-
- up_arrow_cursor = XCreateFontCursor (x_current_display, XC_sb_up_arrow);
- down_arrow_cursor = XCreateFontCursor (x_current_display, XC_sb_down_arrow);
- v_double_arrow_cursor = XCreateFontCursor (x_current_display, XC_sb_v_double_arrow);
-
- f->display.x->v_scrollbar =
- XCreateSimpleWindow (x_current_display, FRAME_X_WINDOW (f),
- pix_x, pix_y, width, height, border,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel);
- XFlush (x_current_display);
- XDefineCursor (x_current_display, f->display.x->v_scrollbar,
- v_double_arrow_cursor);
-
- /* Create slider window */
- f->display.x->v_slider =
- XCreateSimpleWindow (x_current_display, f->display.x->v_scrollbar,
- 0, VSCROLL_WIDTH - 2,
- VSCROLL_WIDTH - 4, VSCROLL_WIDTH - 4,
- 1, f->display.x->border_pixel,
- f->display.x->foreground_pixel);
- XFlush (x_current_display);
- XDefineCursor (x_current_display, f->display.x->v_slider,
- v_double_arrow_cursor);
- XSetWindowBackgroundPixmap (x_current_display, f->display.x->v_slider,
- slider_pixmap);
-
- f->display.x->v_thumbup =
- XCreateSimpleWindow (x_current_display, f->display.x->v_scrollbar,
- 0, 0,
- VSCROLL_WIDTH - 2, VSCROLL_WIDTH - 2,
- 0, f->display.x->foreground_pixel,
- f->display.x-> background_pixel);
- XFlush (x_current_display);
- XDefineCursor (x_current_display, f->display.x->v_thumbup,
- up_arrow_cursor);
- XSetWindowBackgroundPixmap (x_current_display, f->display.x->v_thumbup,
- up_arrow_pixmap);
-
- f->display.x->v_thumbdown =
- XCreateSimpleWindow (x_current_display, f->display.x->v_scrollbar,
- 0, height - VSCROLL_WIDTH + 2,
- VSCROLL_WIDTH - 2, VSCROLL_WIDTH - 2,
- 0, f->display.x->foreground_pixel,
- f->display.x->background_pixel);
- XFlush (x_current_display);
- XDefineCursor (x_current_display, f->display.x->v_thumbdown,
- down_arrow_cursor);
- XSetWindowBackgroundPixmap (x_current_display, f->display.x->v_thumbdown,
- down_arrow_pixmap);
-
- fore_color.pixel = f->display.x->mouse_pixel;
- back_color.pixel = f->display.x->background_pixel;
- XQueryColor (x_current_display,
- DefaultColormap (x_current_display,
- DefaultScreen (x_current_display)),
- &fore_color);
- XQueryColor (x_current_display,
- DefaultColormap (x_current_display,
- DefaultScreen (x_current_display)),
- &back_color);
- XRecolorCursor (x_current_display, up_arrow_cursor,
- &fore_color, &back_color);
- XRecolorCursor (x_current_display, down_arrow_cursor,
- &fore_color, &back_color);
- XRecolorCursor (x_current_display, v_double_arrow_cursor,
- &fore_color, &back_color);
-
- XFreePixmap (x_current_display, slider_pixmap);
- XFreePixmap (x_current_display, up_arrow_pixmap);
- XFreePixmap (x_current_display, down_arrow_pixmap);
- XFlush (x_current_display);
-
- XSelectInput (x_current_display, f->display.x->v_scrollbar,
- ButtonPressMask | ButtonReleaseMask
- | PointerMotionMask | PointerMotionHintMask
- | EnterWindowMask);
- XSelectInput (x_current_display, f->display.x->v_slider,
- ButtonPressMask | ButtonReleaseMask);
- XSelectInput (x_current_display, f->display.x->v_thumbdown,
- ButtonPressMask | ButtonReleaseMask);
- XSelectInput (x_current_display, f->display.x->v_thumbup,
- ButtonPressMask | ButtonReleaseMask);
- XFlush (x_current_display);
-
- /* This should be done at the same time as the main window. */
- XMapWindow (x_current_display, f->display.x->v_scrollbar);
- XMapSubwindows (x_current_display, f->display.x->v_scrollbar);
- XFlush (x_current_display);
-#else /* not HAVE_X11 */
- Bitmap b;
- Pixmap fore_tile, back_tile, bord_tile;
- static short up_arrow_bits[] = {
- 0x0000, 0x0180, 0x03c0, 0x07e0,
- 0x0ff0, 0x1ff8, 0x3ffc, 0x7ffe,
- 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0xffff};
- static short down_arrow_bits[] = {
- 0xffff, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180,
- 0x7ffe, 0x3ffc, 0x1ff8, 0x0ff0,
- 0x07e0, 0x03c0, 0x0180, 0x0000};
-
- fore_tile = XMakeTile (f->display.x->foreground_pixel);
- back_tile = XMakeTile (f->display.x->background_pixel);
- bord_tile = XMakeTile (f->display.x->border_pixel);
-
- b = XStoreBitmap (VSCROLL_WIDTH - 2, VSCROLL_WIDTH - 2, up_arrow_bits);
- up_arrow_pixmap = XMakePixmap (b,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel);
- XFreeBitmap (b);
-
- b = XStoreBitmap (VSCROLL_WIDTH - 2, VSCROLL_WIDTH - 2, down_arrow_bits);
- down_arrow_pixmap = XMakePixmap (b,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel);
- XFreeBitmap (b);
-
- ibw = f->display.x->internal_border_width;
-
- f->display.x->v_scrollbar = XCreateWindow (FRAME_X_WINDOW (f),
- width - VSCROLL_WIDTH - ibw/2,
- ibw/2,
- VSCROLL_WIDTH - 2,
- height - ibw - 2,
- 1, bord_tile, back_tile);
-
- f->display.x->v_scrollbar_width = VSCROLL_WIDTH;
-
- f->display.x->v_thumbup = XCreateWindow (f->display.x->v_scrollbar,
- 0, 0,
- VSCROLL_WIDTH - 2,
- VSCROLL_WIDTH - 2,
- 0, 0, up_arrow_pixmap);
- XTileAbsolute (f->display.x->v_thumbup);
-
- f->display.x->v_thumbdown = XCreateWindow (f->display.x->v_scrollbar,
- 0,
- height - ibw - VSCROLL_WIDTH,
- VSCROLL_WIDTH - 2,
- VSCROLL_WIDTH - 2,
- 0, 0, down_arrow_pixmap);
- XTileAbsolute (f->display.x->v_thumbdown);
-
- f->display.x->v_slider = XCreateWindow (f->display.x->v_scrollbar,
- 0, VSCROLL_WIDTH - 2,
- VSCROLL_WIDTH - 4,
- VSCROLL_WIDTH - 4,
- 1, back_tile, fore_tile);
-
- XSelectInput (f->display.x->v_scrollbar,
- (ButtonPressed | ButtonReleased | KeyPressed));
- XSelectInput (f->display.x->v_thumbup,
- (ButtonPressed | ButtonReleased | KeyPressed));
-
- XSelectInput (f->display.x->v_thumbdown,
- (ButtonPressed | ButtonReleased | KeyPressed));
-
- XMapWindow (f->display.x->v_thumbup);
- XMapWindow (f->display.x->v_thumbdown);
- XMapWindow (f->display.x->v_slider);
- XMapWindow (f->display.x->v_scrollbar);
-
- XFreePixmap (fore_tile);
- XFreePixmap (back_tile);
- XFreePixmap (up_arrow_pixmap);
- XFreePixmap (down_arrow_pixmap);
-#endif /* not HAVE_X11 */
-}
-
-static void
-install_horizontal_scrollbar (f)
- struct frame *f;
-{
- int ibw = f->display.x->internal_border_width;
- Window parent;
- Pixmap left_arrow_pixmap, right_arrow_pixmap, slider_pixmap;
- int pix_x, pix_y;
- int width;
-
- pix_x = ibw;
- pix_y = PIXEL_HEIGHT (f) - HSCROLL_HEIGHT - ibw ;
- width = PIXEL_WIDTH (f) - 2 * ibw;
- if (f->display.x->v_scrollbar_width)
- width -= (f->display.x->v_scrollbar_width + 1);
-
-#ifdef HAVE_X11
- left_arrow_pixmap =
- XCreatePixmapFromBitmapData (x_current_display, FRAME_X_WINDOW (f),
- left_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- right_arrow_pixmap =
- XCreatePixmapFromBitmapData (x_current_display, FRAME_X_WINDOW (f),
- right_arrow_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- slider_pixmap =
- XCreatePixmapFromBitmapData (x_current_display, FRAME_X_WINDOW (f),
- gray_bits, 16, 16,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel,
- DefaultDepth (x_current_display,
- XDefaultScreen (x_current_display)));
-
- left_arrow_cursor = XCreateFontCursor (x_current_display, XC_sb_left_arrow);
- right_arrow_cursor = XCreateFontCursor (x_current_display, XC_sb_right_arrow);
- h_double_arrow_cursor = XCreateFontCursor (x_current_display, XC_sb_h_double_arrow);
-
- f->display.x->h_scrollbar =
- XCreateSimpleWindow (x_current_display, FRAME_X_WINDOW (f),
- pix_x, pix_y,
- width - ibw - 2, HSCROLL_HEIGHT - 2, 1,
- f->display.x->foreground_pixel,
- f->display.x->background_pixel);
- XDefineCursor (x_current_display, f->display.x->h_scrollbar,
- h_double_arrow_cursor);
-
- f->display.x->h_slider =
- XCreateSimpleWindow (x_current_display, f->display.x->h_scrollbar,
- 0, 0,
- HSCROLL_HEIGHT - 4, HSCROLL_HEIGHT - 4,
- 1, f->display.x->foreground_pixel,
- f->display.x->background_pixel);
- XDefineCursor (x_current_display, f->display.x->h_slider,
- h_double_arrow_cursor);
- XSetWindowBackgroundPixmap (x_current_display, f->display.x->h_slider,
- slider_pixmap);
-
- f->display.x->h_thumbleft =
- XCreateSimpleWindow (x_current_display, f->display.x->h_scrollbar,
- 0, 0,
- HSCROLL_HEIGHT - 2, HSCROLL_HEIGHT - 2,
- 0, f->display.x->foreground_pixel,
- f->display.x->background_pixel);
- XDefineCursor (x_current_display, f->display.x->h_thumbleft,
- left_arrow_cursor);
- XSetWindowBackgroundPixmap (x_current_display, f->display.x->h_thumbleft,
- left_arrow_pixmap);
-
- f->display.x->h_thumbright =
- XCreateSimpleWindow (x_current_display, f->display.x->h_scrollbar,
- width - ibw - HSCROLL_HEIGHT, 0,
- HSCROLL_HEIGHT - 2, HSCROLL_HEIGHT -2,
- 0, f->display.x->foreground_pixel,
- f->display.x->background_pixel);
- XDefineCursor (x_current_display, f->display.x->h_thumbright,
- right_arrow_cursor);
- XSetWindowBackgroundPixmap (x_current_display, f->display.x->h_thumbright,
- right_arrow_pixmap);
-
- XFreePixmap (x_current_display, slider_pixmap);
- XFreePixmap (x_current_display, left_arrow_pixmap);
- XFreePixmap (x_current_display, right_arrow_pixmap);
-
- XSelectInput (x_current_display, f->display.x->h_scrollbar,
- ButtonPressMask | ButtonReleaseMask
- | PointerMotionMask | PointerMotionHintMask
- | EnterWindowMask);
- XSelectInput (x_current_display, f->display.x->h_slider,
- ButtonPressMask | ButtonReleaseMask);
- XSelectInput (x_current_display, f->display.x->h_thumbright,
- ButtonPressMask | ButtonReleaseMask);
- XSelectInput (x_current_display, f->display.x->h_thumbleft,
- ButtonPressMask | ButtonReleaseMask);
-
- XMapWindow (x_current_display, f->display.x->h_scrollbar);
- XMapSubwindows (x_current_display, f->display.x->h_scrollbar);
-#else /* not HAVE_X11 */
- Bitmap b;
- Pixmap fore_tile, back_tile, bord_tile;
-#endif
-}
-\f
-#ifndef HAVE_X11 /* X10 */
-#define XMoveResizeWindow XConfigureWindow
-#endif /* not HAVE_X11 */
-
-/* Adjust the displayed position in the scroll bar for window W. */
-
-void
-adjust_scrollbars (f)
- struct frame *f;
-{
- int pos;
- int first_char_in_window, char_beyond_window, chars_in_window;
- int chars_in_buffer, buffer_size;
- struct window *w = XWINDOW (FRAME_SELECTED_WINDOW (f));
-
- if (! FRAME_X_P (f))
- return;
-
- if (f->display.x->v_scrollbar != 0)
- {
- int h, height;
- struct buffer *b = XBUFFER (w->buffer);
-
- buffer_size = Z - BEG;
- chars_in_buffer = ZV - BEGV;
- first_char_in_window = marker_position (w->start);
- char_beyond_window = buffer_size + 1 - XFASTINT (w->window_end_pos);
- chars_in_window = char_beyond_window - first_char_in_window;
-
- /* Calculate height of scrollbar area */
-
- height = f->height * FONT_HEIGHT (f->display.x->font)
- + f->display.x->internal_border_width
- - 2 * (f->display.x->v_scrollbar_width);
-
- /* Figure starting position for the scrollbar slider */
-
- if (chars_in_buffer <= 0)
- pos = 0;
- else
- pos = ((first_char_in_window - BEGV - BEG) * height
- / chars_in_buffer);
- pos = max (0, pos);
- pos = min (pos, height - 2);
-
- /* Figure length of the slider */
-
- if (chars_in_buffer <= 0)
- h = height;
- else
- h = (chars_in_window * height) / chars_in_buffer;
- h = min (h, height - pos);
- h = max (h, 1);
-
- /* Add thumbup offset to starting position of slider */
-
- pos += (f->display.x->v_scrollbar_width - 2);
-
- XMoveResizeWindow (XDISPLAY
- f->display.x->v_slider,
- 0, pos,
- f->display.x->v_scrollbar_width - 4, h);
- }
-
- if (f->display.x->h_scrollbar != 0)
- {
- int l, length; /* Length of the scrollbar area */
-
- length = f->width * FONT_WIDTH (f->display.x->font)
- + f->display.x->internal_border_width
- - 2 * (f->display.x->h_scrollbar_height);
-
- /* Starting position for horizontal slider */
- if (! w->hscroll)
- pos = 0;
- else
- pos = (w->hscroll * length) / (w->hscroll + f->width);
- pos = max (0, pos);
- pos = min (pos, length - 2);
-
- /* Length of slider */
- l = length - pos;
-
- /* Add thumbup offset */
- pos += (f->display.x->h_scrollbar_height - 2);
-
- XMoveResizeWindow (XDISPLAY
- f->display.x->h_slider,
- pos, 0,
- l, f->display.x->h_scrollbar_height - 4);
- }
-}
-\f
-/* Adjust the size of the scroll bars of frame F,
- when the frame size has changed. */
-
-void
-x_resize_scrollbars (f)
- struct frame *f;
-{
- int ibw = f->display.x->internal_border_width;
- int pixelwidth, pixelheight;
-
- if (f == 0
- || f->display.x == 0
- || (f->display.x->v_scrollbar == 0
- && f->display.x->h_scrollbar == 0))
- return;
-
- /* Get the size of the frame. */
- pixelwidth = (f->width * FONT_WIDTH (f->display.x->font)
- + 2 * ibw + f->display.x->v_scrollbar_width);
- pixelheight = (f->height * FONT_HEIGHT (f->display.x->font)
- + 2 * ibw + f->display.x->h_scrollbar_height);
-
- if (f->display.x->v_scrollbar_width && f->display.x->v_scrollbar)
- {
- BLOCK_INPUT;
- XMoveResizeWindow (XDISPLAY
- f->display.x->v_scrollbar,
- pixelwidth - f->display.x->v_scrollbar_width - ibw/2,
- ibw/2,
- f->display.x->v_scrollbar_width - 2,
- pixelheight - ibw - 2);
- XMoveWindow (XDISPLAY
- f->display.x->v_thumbdown, 0,
- pixelheight - ibw - f->display.x->v_scrollbar_width);
- UNBLOCK_INPUT;
- }
-
- if (f->display.x->h_scrollbar_height && f->display.x->h_scrollbar)
- {
- if (f->display.x->v_scrollbar_width)
- pixelwidth -= f->display.x->v_scrollbar_width + 1;
-
- BLOCK_INPUT;
- XMoveResizeWindow (XDISPLAY
- f->display.x->h_scrollbar,
- ibw / 2,
- pixelheight - f->display.x->h_scrollbar_height - ibw / 2,
- pixelwidth - ibw - 2,
- f->display.x->h_scrollbar_height - 2);
- XMoveWindow (XDISPLAY
- f->display.x->h_thumbright,
- pixelwidth - ibw - f->display.x->h_scrollbar_height, 0);
- UNBLOCK_INPUT;
- }
-}
-
-x_pixel_width (f)
- register struct frame *f;
-{
- return PIXEL_WIDTH (f);
-}
-
-x_pixel_height (f)
- register struct frame *f;
-{
- return PIXEL_HEIGHT (f);
-}
-\f
DEFUN ("x-defined-color", Fx_defined_color, Sx_defined_color, 1, 1, 0,
"Return t if the current X display supports the color named COLOR.")
(color)
"Return t if the X display used currently supports color.")
()
{
- if (XINT (x_screen_planes) <= 2)
+ if (x_screen_planes <= 2)
return Qnil;
switch (screen_visual->class)
}
}
-DEFUN ("x-pixel-width", Fx_pixel_width, Sx_pixel_width, 1, 1, 0,
- "Return the width in pixels of FRAME.")
- (frame)
- Lisp_Object frame;
+x_pixel_width (f)
+ register struct frame *f;
{
- CHECK_LIVE_FRAME (frame, 0);
- return make_number (XFRAME (frame)->display.x->pixel_width);
+ return PIXEL_WIDTH (f);
}
-DEFUN ("x-pixel-height", Fx_pixel_height, Sx_pixel_height, 1, 1, 0,
- "Return the height in pixels of FRAME.")
- (frame)
- Lisp_Object frame;
+x_pixel_height (f)
+ register struct frame *f;
{
- CHECK_LIVE_FRAME (frame, 0);
- return make_number (XFRAME (frame)->display.x->pixel_height);
+ return PIXEL_HEIGHT (f);
+}
+
+x_char_width (f)
+ register struct frame *f;
+{
+ return FONT_WIDTH (f->display.x->font);
+}
+
+x_char_height (f)
+ register struct frame *f;
+{
+ return FONT_HEIGHT (f->display.x->font);
}
\f
#if 0 /* These no longer seem like the right way to do things. */
}
}
- unread_command_char = obj;
+ unread_command_event = obj;
if (mouse_below_point)
{
contour_begin_x = point_x;
XDrawLine (x_current_display, FRAME_X_WINDOW (f),
erase_gc, left, line, right, line);
UNBLOCK_INPUT;
- unread_command_char = obj;
+ unread_command_event = obj;
#if 0
XFreeGC (x_current_display, line_gc);
XFreeGC (x_current_display, erase_gc);
BLOCK_INPUT;
}
while (XTYPE (obj) == Lisp_Cons /* Mouse event */
- && EQ (Fcar (Fcdr (Fcdr (obj))), Qnil) /* Not scrollbar */
+ && EQ (Fcar (Fcdr (Fcdr (obj))), Qnil) /* Not scroll bar */
&& EQ (Vmouse_depressed, Qnil) /* Only motion events */
&& EQ (Vmouse_window, selected_window) /* In this window */
&& x_mouse_frame);
- unread_command_char = obj;
+ unread_command_event = obj;
if (mouse_track_width)
{
Normally X-POS and Y-POS are the position of the click on the frame\n\
(measured in characters and lines), and WINDOW is the window clicked in.\n\
KEYSEQ is a string, the key sequence to be looked up in the mouse maps.\n\
-If FRAME-PART is non-nil, the event was on a scrollbar;\n\
-then Y-POS is really the total length of the scrollbar, while X-POS is\n\
-the relative position of the scrollbar's value within that total length,\n\
+If FRAME-PART is non-nil, the event was on a scroll bar;\n\
+then Y-POS is really the total length of the scroll bar, while X-POS is\n\
+the relative position of the scroll bar's value within that total length,\n\
and a third element OFFSET appears in that list: the height of the thumb-up\n\
area at the top of the scroll bar.\n\
FRAME-PART is one of the following symbols:\n\
- `vertical-scrollbar', `vertical-thumbup', `vertical-thumbdown',\n\
- `horizontal-scrollbar', `horizontal-thumbleft', `horizontal-thumbright'.\n\
+ `vertical-scroll-bar', `vertical-thumbup', `vertical-thumbdown',\n\
+ `horizontal-scroll-bar', `horizontal-thumbleft', `horizontal-thumbright'.\n\
TIMESTAMP is the lower 23 bits of the X-server's timestamp for\n\
the mouse event.")
(arg)
Fcons (timestamp, Qnil)))));
return Vmouse_event;
}
- else if ((f = x_window_to_scrollbar (xrep.MouseWindow, &part, &prefix)) != 0)
+ else if ((f = x_window_to_scroll_bar (xrep.MouseWindow, &part, &prefix)) != 0)
{
int pos, len;
Lisp_Object keyseq;
keyseq = concat2 (Fchar_to_string (make_number (prefix)),
Fchar_to_string (make_number (com_letter)));
- pos = xrep.MouseY - (f->display.x->v_scrollbar_width - 2);
+ pos = xrep.MouseY - (f->display.x->v_scroll_bar_width - 2);
XSET (tempx, Lisp_Int, pos);
len = ((FONT_HEIGHT (f->display.x->font) * f->height)
+ f->display.x->internal_border_width
- - (2 * (f->display.x->v_scrollbar_width - 2)));
+ - (2 * (f->display.x->v_scroll_bar_width - 2)));
XSET (tempy, Lisp_Int, len);
XSET (timestamp, Lisp_Int, (xrep.MouseTime & 0x7fffff));
Vmouse_window = f->selected_window;
Vmouse_event
= Fcons (Fcons (tempx, Fcons (tempy,
- Fcons (make_number (f->display.x->v_scrollbar_width - 2),
+ Fcons (make_number (f->display.x->v_scroll_bar_width - 2),
Qnil))),
Fcons (Vmouse_window,
Fcons (intern (part),
default:
if (f = x_window_to_frame (xrep.MouseWindow))
Vmouse_window = f->selected_window;
- else if (f = x_window_to_scrollbar (xrep.MouseWindow, &part, &prefix))
+ else if (f = x_window_to_scroll_bar (xrep.MouseWindow, &part, &prefix))
Vmouse_window = f->selected_window;
return Vmouse_event = Qnil;
}
x_screen = DefaultScreenOfDisplay (x_current_display);
- x_screen_count = make_number (ScreenCount (x_current_display));
+ x_screen_count = ScreenCount (x_current_display);
Vx_vendor = build_string (ServerVendor (x_current_display));
- x_release = make_number (VendorRelease (x_current_display));
+ x_release = VendorRelease (x_current_display);
- x_screen_height = make_number (HeightOfScreen (x_screen));
- x_screen_height_mm = make_number (HeightMMOfScreen (x_screen));
- x_screen_width = make_number (WidthOfScreen (x_screen));
- x_screen_width_mm = make_number (WidthMMOfScreen (x_screen));
+ x_screen_height = HeightOfScreen (x_screen);
+ x_screen_height_mm = HeightMMOfScreen (x_screen);
+ x_screen_width = WidthOfScreen (x_screen);
+ x_screen_width_mm = WidthMMOfScreen (x_screen);
switch (DoesBackingStore (x_screen))
{
}
if (DoesSaveUnders (x_screen) == True)
- x_save_under = Qt;
+ x_save_under = 1;
else
- x_save_under = Qnil;
+ x_save_under = 0;
screen_visual = select_visual (x_screen, &n_planes);
- x_screen_planes = make_number (n_planes);
+ x_screen_planes = n_planes;
Vx_screen_visual = intern (x_visual_strings [screen_visual->class]);
/* X Atoms used by emacs. */
staticpro (&Qauto_lower);
Qbackground_color = intern ("background-color");
staticpro (&Qbackground_color);
+ Qbar = intern ("bar");
+ staticpro (&Qbar);
Qborder_color = intern ("border-color");
staticpro (&Qborder_color);
Qborder_width = intern ("border-width");
staticpro (&Qborder_width);
+ Qbox = intern ("box");
+ staticpro (&Qbox);
Qcursor_color = intern ("cursor-color");
staticpro (&Qcursor_color);
+ Qcursor_type = intern ("cursor-type");
+ staticpro (&Qcursor_type);
Qfont = intern ("font");
staticpro (&Qfont);
Qforeground_color = intern ("foreground-color");
staticpro (&Qforeground_color);
Qgeometry = intern ("geometry");
staticpro (&Qgeometry);
- Qhorizontal_scroll_bar = intern ("horizontal-scroll-bar");
- staticpro (&Qhorizontal_scroll_bar);
Qicon_left = intern ("icon-left");
staticpro (&Qicon_left);
Qicon_top = intern ("icon-top");
staticpro (&Qleft);
Qmouse_color = intern ("mouse-color");
staticpro (&Qmouse_color);
+ Qnone = intern ("none");
+ staticpro (&Qnone);
Qparent_id = intern ("parent-id");
staticpro (&Qparent_id);
Qsuppress_icon = intern ("suppress-icon");
staticpro (&Qtop);
Qundefined_color = intern ("undefined-color");
staticpro (&Qundefined_color);
- Qvertical_scroll_bar = intern ("vertical-scroll-bar");
- staticpro (&Qvertical_scroll_bar);
+ Qvertical_scroll_bars = intern ("vertical-scroll-bars");
+ staticpro (&Qvertical_scroll_bars);
Qwindow_id = intern ("window-id");
staticpro (&Qwindow_id);
Qx_frame_parameter = intern ("x-frame-parameter");
init_x_parm_symbols ();
- DEFVAR_INT ("mouse-x-position", &x_mouse_x,
- "The X coordinate of the mouse position, in characters.");
- x_mouse_x = Qnil;
-
- DEFVAR_INT ("mouse-y-position", &x_mouse_y,
- "The Y coordinate of the mouse position, in characters.");
- x_mouse_y = Qnil;
-
DEFVAR_INT ("mouse-buffer-offset", &mouse_buffer_offset,
"The buffer offset of the character under the pointer.");
- mouse_buffer_offset = Qnil;
+ mouse_buffer_offset = 0;
DEFVAR_INT ("x-pointer-shape", &Vx_pointer_shape,
"The shape of the pointer when over text.");
"The shape of the pointer when over the mode line.");
Vx_mode_pointer_shape = Qnil;
- DEFVAR_LISP ("x-bar-cursor", &Vbar_cursor,
- "*If non-nil, use a vertical bar cursor. Otherwise, use the traditional box.");
- Vbar_cursor = Qnil;
-
DEFVAR_LISP ("x-cursor-fore-pixel", &Vx_cursor_fore_pixel,
"A string indicating the foreground color of the cursor box.");
Vx_cursor_fore_pixel = Qnil;
#ifdef HAVE_X11
defsubr (&Sx_get_resource);
- defsubr (&Sx_pixel_width);
- defsubr (&Sx_pixel_height);
#if 0
defsubr (&Sx_draw_rectangle);
defsubr (&Sx_erase_rectangle);