changeset 771:538c0bcb418e

*** empty log message ***
author Jim Blandy <jimb@redhat.com>
date Tue, 14 Jul 1992 16:25:43 +0000
parents 4de9c9a62bda
children 2b5af16c9af3
files src/=xselect.c.old src/xfns.c src/xterm.c src/xterm.h
diffstat 4 files changed, 1766 insertions(+), 1768 deletions(-) [+]
line wrap: on
line diff
--- a/src/=xselect.c.old	Tue Jul 14 15:57:45 1992 +0000
+++ b/src/=xselect.c.old	Tue Jul 14 16:25:43 1992 +0000
@@ -21,7 +21,7 @@
 #include "lisp.h"
 #include "xterm.h"
 #include "buffer.h"
-#include "screen.h"
+#include "frame.h"
 
 #ifdef HAVE_X11
 
@@ -127,7 +127,7 @@
       || ((EQ (selection_type, Qclipboard)) && !NILP (Vx_clipboard_value)))
     return 1;
 
-  selecting_window = selected_screen->display.x->window_desc;
+  selecting_window = selected_frame->display.x->window_desc;
   XSetSelectionOwner (x_current_display, selection_type,
 		      selecting_window, time);
   owner_window = XGetSelectionOwner (x_current_display, selection_type);
@@ -212,7 +212,7 @@
      Atom selection;
      Time changed_owner_time;
 {
-  struct screen *s = x_window_to_screen (old_owner);
+  struct frame *s = x_window_to_frame (old_owner);
 
   if (s)			/* We are the owner */
     {
@@ -531,7 +531,7 @@
 
   BLOCK_INPUT;
   requestor_time = last_event_timestamp;
-  requestor_window = selected_screen->display.x->window_desc;
+  requestor_window = selected_frame->display.x->window_desc;
   XConvertSelection (x_current_display, type, XA_STRING,
 		     Xatom_emacs_selection, requestor_window, requestor_time);
   XIfEvent (x_current_display,
--- a/src/xfns.c	Tue Jul 14 15:57:45 1992 +0000
+++ b/src/xfns.c	Tue Jul 14 16:25:43 1992 +0000
@@ -28,7 +28,7 @@
 #include "config.h"
 #include "lisp.h"
 #include "xterm.h"
-#include "screen.h"
+#include "frame.h"
 #include "window.h"
 #include "buffer.h"
 #include "dispextern.h"
@@ -38,7 +38,7 @@
 #ifdef HAVE_X_WINDOWS
 extern void abort ();
 
-void x_set_screen_param ();
+void x_set_frame_param ();
 
 #define min(a,b) ((a) < (b) ? (a) : (b))
 #define max(a,b) ((a) > (b) ? (a) : (b))
@@ -194,7 +194,7 @@
 Time mouse_timestamp;
 
 Lisp_Object Qundefined_color;
-Lisp_Object Qx_screen_parameter;
+Lisp_Object Qx_frame_parameter;
 
 extern Lisp_Object Vwindow_system_version;
 
@@ -204,112 +204,112 @@
 /* Points to table of defined typefaces.  */
 struct face *x_face_table[MAX_FACES_AND_GLYPHS];
 
-/* Return the Emacs screen-object corresponding to an X window.
-   It could be the screen's main window or an icon window.  */
-
-struct screen *
-x_window_to_screen (wdesc)
+/* Return the Emacs frame-object corresponding to an X window.
+   It could be the frame's main window or an icon window.  */
+
+struct frame *
+x_window_to_frame (wdesc)
      int wdesc;
 {
-  Lisp_Object tail, screen;
-  struct screen *s;
-
-  for (tail = Vscreen_list; CONSP (tail); tail = XCONS (tail)->cdr)
+  Lisp_Object tail, frame;
+  struct frame *f;
+
+  for (tail = Vframe_list; CONSP (tail); tail = XCONS (tail)->cdr)
     {
-      screen = XCONS (tail)->car;
-      if (XTYPE (screen) != Lisp_Screen)
+      frame = XCONS (tail)->car;
+      if (XTYPE (frame) != Lisp_Frame)
         continue;
-      s = XSCREEN (screen);
-      if (s->display.x->window_desc == wdesc
-          || s->display.x->icon_desc == wdesc)
-        return s;
+      f = XFRAME (frame);
+      if (f->display.x->window_desc == wdesc
+          || f->display.x->icon_desc == wdesc)
+        return f;
     }
   return 0;
 }
 
-/* Map an X window that implements a scroll bar to the Emacs screen it
+/* 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 screen *
+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, screen;
-  struct screen *s;
-
-  for (tail = Vscreen_list; CONSP (tail); tail = XCONS (tail)->cdr)
+  Lisp_Object tail, frame;
+  struct frame *f;
+
+  for (tail = Vframe_list; CONSP (tail); tail = XCONS (tail)->cdr)
     {
-      screen = XCONS (tail)->car;
-      if (XTYPE (screen) != Lisp_Screen)
+      frame = XCONS (tail)->car;
+      if (XTYPE (frame) != Lisp_Frame)
         continue;
 
-      s = XSCREEN (screen);
+      f = XFRAME (frame);
       if (part_ptr == 0 && prefix_ptr == 0)
-        return s;
-
-      if (s->display.x->v_scrollbar == wdesc)
+        return f;
+
+      if (f->display.x->v_scrollbar == wdesc)
         {
 	  *part_ptr = Qvscrollbar_part;
           *prefix_ptr = VSCROLL_BAR_PREFIX;
-          return s;
+          return f;
         }
-      else if (s->display.x->v_slider == wdesc)
+      else if (f->display.x->v_slider == wdesc)
         {
           *part_ptr = Qvslider_part;
           *prefix_ptr = VSCROLL_SLIDER_PREFIX;
-          return s;
+          return f;
         }
-      else if (s->display.x->v_thumbup == wdesc)
+      else if (f->display.x->v_thumbup == wdesc)
         {
           *part_ptr = Qvthumbup_part;
           *prefix_ptr = VSCROLL_THUMBUP_PREFIX;
-          return s;
+          return f;
         }
-      else if (s->display.x->v_thumbdown == wdesc)
+      else if (f->display.x->v_thumbdown == wdesc)
         {
           *part_ptr = Qvthumbdown_part;
           *prefix_ptr = VSCROLL_THUMBDOWN_PREFIX;
-          return s;
+          return f;
         }
-      else if (s->display.x->h_scrollbar == wdesc)
+      else if (f->display.x->h_scrollbar == wdesc)
         {
           *part_ptr = Qhscrollbar_part;
           *prefix_ptr = HSCROLL_BAR_PREFIX;
-          return s;
+          return f;
         }
-      else if (s->display.x->h_slider == wdesc)
+      else if (f->display.x->h_slider == wdesc)
         {
           *part_ptr = Qhslider_part;
           *prefix_ptr = HSCROLL_SLIDER_PREFIX;
-          return s;
+          return f;
         }
-      else if (s->display.x->h_thumbleft == wdesc)
+      else if (f->display.x->h_thumbleft == wdesc)
         {
           *part_ptr = Qhthumbleft_part;
           *prefix_ptr = HSCROLL_THUMBLEFT_PREFIX;
-          return s;
+          return f;
         }
-      else if (s->display.x->h_thumbright == wdesc)
+      else if (f->display.x->h_thumbright == wdesc)
         {
           *part_ptr = Qhthumbright_part;
           *prefix_ptr = HSCROLL_THUMBRIGHT_PREFIX;
-          return s;
+          return f;
         }
     }
   return 0;
 }
 
-/* Connect the screen-parameter names for X screens
+/* Connect the frame-parameter names for X frames
    to the ways of passing the parameter values to the window system.
 
    The name of a parameter, as a Lisp symbol,
-   has an `x-screen-parameter' property which is an integer in Lisp
-   but can be interpreted as an `enum x_screen_parm' in C.  */
-
-enum x_screen_parm
+   has an `x-frame-parameter' property which is an integer in Lisp
+   but can be interpreted as an `enum x_frame_parm' in C.  */
+
+enum x_frame_parm
 {
   X_PARM_FOREGROUND_COLOR,
   X_PARM_BACKGROUND_COLOR,
@@ -328,10 +328,10 @@
 };
 
 
-struct x_screen_parm_table
+struct x_frame_parm_table
 {
   char *name;
-  void (*setter)( /* struct screen *screen, Lisp_Object val, oldval */ );
+  void (*setter)( /* struct frame *frame, Lisp_Object val, oldval */ );
 };
 
 void x_set_foreground_color ();
@@ -349,7 +349,7 @@
 void x_set_vertical_scrollbar ();
 void x_set_horizontal_scrollbar ();
 
-static struct x_screen_parm_table x_screen_parms[] =
+static struct x_frame_parm_table x_frame_parms[] =
 {
   "foreground-color", x_set_foreground_color,
   "background-color", x_set_background_color,
@@ -367,21 +367,21 @@
   "horizontal-scrollbar", x_set_horizontal_scrollbar,
 };
 
-/* Attach the `x-screen-parameter' properties to
+/* Attach the `x-frame-parameter' properties to
    the Lisp symbol names of parameters relevant to X.  */
 
 init_x_parm_symbols ()
 {
   int i;
 
-  Qx_screen_parameter = intern ("x-screen-parameter");
-
-  for (i = 0; i < sizeof (x_screen_parms)/sizeof (x_screen_parms[0]); i++)
-    Fput (intern (x_screen_parms[i].name), Qx_screen_parameter,
+  Qx_frame_parameter = intern ("x-frame-parameter");
+
+  for (i = 0; i < sizeof (x_frame_parms)/sizeof (x_frame_parms[0]); i++)
+    Fput (intern (x_frame_parms[i].name), Qx_frame_parameter,
 	  make_number (i));
 }
 
-/* Report to X that a screen parameter of screen S is being set or changed.
+/* Report to X that a frame parameter of frame F is being set or changed.
    PARAM is the symbol that says which parameter.
    VAL is the new value.
    OLDVAL is the old value.
@@ -389,45 +389,45 @@
    otherwise the `x_set_...' function for this parameter.  */
 
 void
-x_set_screen_param (s, param, val, oldval)
-     register struct screen *s;
+x_set_frame_param (f, param, val, oldval)
+     register struct frame *f;
      Lisp_Object param;
      register Lisp_Object val;
      register Lisp_Object oldval;
 {
   register Lisp_Object tem;
-  tem = Fget (param, Qx_screen_parameter);
+  tem = Fget (param, Qx_frame_parameter);
   if (XTYPE (tem) == Lisp_Int
       && XINT (tem) >= 0
-      && XINT (tem) < sizeof (x_screen_parms)/sizeof (x_screen_parms[0]))
-    (*x_screen_parms[XINT (tem)].setter)(s, val, oldval);
+      && XINT (tem) < sizeof (x_frame_parms)/sizeof (x_frame_parms[0]))
+    (*x_frame_parms[XINT (tem)].setter)(f, val, oldval);
 }
 
-/* Insert a description of internally-recorded parameters of screen X
+/* Insert a description of internally-recorded parameters of frame X
    into the parameter alist *ALISTPTR that is to be given to the user.
    Only parameters that are specific to the X window system
-   and whose values are not correctly recorded in the screen's
+   and whose values are not correctly recorded in the frame's
    param_alist need to be considered here.  */
 
-x_report_screen_params (s, alistptr)
-     struct screen *s;
+x_report_frame_params (f, alistptr)
+     struct frame *f;
      Lisp_Object *alistptr;
 {
   char buf[16];
 
-  store_in_alist (alistptr, "left", make_number (s->display.x->left_pos));
-  store_in_alist (alistptr, "top", make_number (s->display.x->top_pos));
+  store_in_alist (alistptr, "left", make_number (f->display.x->left_pos));
+  store_in_alist (alistptr, "top", make_number (f->display.x->top_pos));
   store_in_alist (alistptr, "border-width",
-       	   make_number (s->display.x->border_width));
+       	   make_number (f->display.x->border_width));
   store_in_alist (alistptr, "internal-border-width",
-       	   make_number (s->display.x->internal_border_width));
-  sprintf (buf, "%d", s->display.x->window_desc);
+       	   make_number (f->display.x->internal_border_width));
+  sprintf (buf, "%d", f->display.x->window_desc);
   store_in_alist (alistptr, "window-id",
        	   build_string (buf));
 }
 
 /* Decide if color named COLOR is valid for the display
-   associated with the selected screen. */
+   associated with the selected frame. */
 int
 defined_color (color, color_def)
      char *color;
@@ -456,8 +456,8 @@
 }
 
 /* Given a string ARG naming a color, compute a pixel value from it
-   suitable for screen S.
-   If S is not a color screen, return DEF (default) regardless of what
+   suitable for screen F.
+   If F is not a color screen, return DEF (default) regardless of what
    ARG says.  */
 
 int
@@ -488,112 +488,112 @@
     Fsignal (Qundefined_color, Fcons (arg, Qnil));
 }
 
-/* Functions called only from `x_set_screen_param'
+/* Functions called only from `x_set_frame_param'
    to set individual parameters.
 
-   If s->display.x->window_desc is 0,
-   the screen is being created and its X-window does not exist yet.
+   If f->display.x->window_desc is 0,
+   the frame is being created and its X-window does not exist yet.
    In that case, just record the parameter's new value
    in the standard place; do not attempt to change the window.  */
 
 void
-x_set_foreground_color (s, arg, oldval)
-     struct screen *s;
+x_set_foreground_color (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
-  s->display.x->foreground_pixel = x_decode_color (arg, BLACK_PIX_DEFAULT);
-  if (s->display.x->window_desc != 0)
+  f->display.x->foreground_pixel = x_decode_color (arg, BLACK_PIX_DEFAULT);
+  if (f->display.x->window_desc != 0)
     {
 #ifdef HAVE_X11
       BLOCK_INPUT;
-      XSetForeground (x_current_display, s->display.x->normal_gc,
-		      s->display.x->foreground_pixel);
-      XSetBackground (x_current_display, s->display.x->reverse_gc,
-		      s->display.x->foreground_pixel);
-      if (s->display.x->v_scrollbar)
+      XSetForeground (x_current_display, f->display.x->normal_gc,
+		      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, s->display.x->v_scrollbar,
-			    s->display.x->foreground_pixel);
+          XSetWindowBorder (x_current_display, f->display.x->v_scrollbar,
+			    f->display.x->foreground_pixel);
 
           slider_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 gray_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
           up_arrow_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 up_arrow_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
           down_arrow_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 down_arrow_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
 
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->v_thumbup,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_thumbup,
 				      up_arrow_pixmap);
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->v_thumbdown,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_thumbdown,
 				      down_arrow_pixmap);
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->v_slider,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_slider,
 				      slider_pixmap);
 
-          XClearWindow (XDISPLAY s->display.x->v_thumbup);
-          XClearWindow (XDISPLAY s->display.x->v_thumbdown);
-          XClearWindow (XDISPLAY s->display.x->v_slider);
+          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 (s->display.x->h_scrollbar)
+      if (f->display.x->h_scrollbar)
         {
           Pixmap left_arrow_pixmap, right_arrow_pixmap, slider_pixmap;
 
-          XSetWindowBorder (x_current_display, s->display.x->h_scrollbar,
-			    s->display.x->foreground_pixel);
+          XSetWindowBorder (x_current_display, f->display.x->h_scrollbar,
+			    f->display.x->foreground_pixel);
 
           slider_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 gray_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
 
           left_arrow_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 up_arrow_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
           right_arrow_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 down_arrow_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
 
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->h_slider,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_slider,
 				      slider_pixmap);
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->h_thumbleft,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_thumbleft,
 				      left_arrow_pixmap);
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->h_thumbright,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_thumbright,
 				      right_arrow_pixmap);
 
-          XClearWindow (XDISPLAY s->display.x->h_thumbleft);
-          XClearWindow (XDISPLAY s->display.x->h_thumbright);
-          XClearWindow (XDISPLAY s->display.x->h_slider);
+          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);
@@ -601,150 +601,150 @@
         }
       UNBLOCK_INPUT;
 #endif				/* HAVE_X11 */
-      if (s->visible)
-        redraw_screen (s);
+      if (f->visible)
+        redraw_frame (f);
     }
 }
 
 void
-x_set_background_color (s, arg, oldval)
-     struct screen *s;
+x_set_background_color (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
   Pixmap temp;
   int mask;
 
-  s->display.x->background_pixel = x_decode_color (arg, WHITE_PIX_DEFAULT);
-
-  if (s->display.x->window_desc != 0)
+  f->display.x->background_pixel = x_decode_color (arg, WHITE_PIX_DEFAULT);
+
+  if (f->display.x->window_desc != 0)
     {
       BLOCK_INPUT;
 #ifdef HAVE_X11
-      /* The main screen. */
-      XSetBackground (x_current_display, s->display.x->normal_gc,
-		      s->display.x->background_pixel);
-      XSetForeground (x_current_display, s->display.x->reverse_gc,
-		      s->display.x->background_pixel);
-      XSetWindowBackground (x_current_display, s->display.x->window_desc,
-			    s->display.x->background_pixel);
+      /* The main frame area. */
+      XSetBackground (x_current_display, f->display.x->normal_gc,
+		      f->display.x->background_pixel);
+      XSetForeground (x_current_display, f->display.x->reverse_gc,
+		      f->display.x->background_pixel);
+      XSetWindowBackground (x_current_display, f->display.x->window_desc,
+			    f->display.x->background_pixel);
 
       /* Scroll bars. */
-      if (s->display.x->v_scrollbar)
+      if (f->display.x->v_scrollbar)
         {
           Pixmap  up_arrow_pixmap, down_arrow_pixmap, slider_pixmap;
 
-          XSetWindowBackground (x_current_display, s->display.x->v_scrollbar,
-				s->display.x->background_pixel);
+          XSetWindowBackground (x_current_display, f->display.x->v_scrollbar,
+				f->display.x->background_pixel);
 
           slider_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 gray_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
           up_arrow_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 up_arrow_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
           down_arrow_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 down_arrow_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
 
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->v_thumbup,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_thumbup,
 				      up_arrow_pixmap);
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->v_thumbdown,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_thumbdown,
 				      down_arrow_pixmap);
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->v_slider,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->v_slider,
 				      slider_pixmap);
 
-          XClearWindow (XDISPLAY s->display.x->v_thumbup);
-          XClearWindow (XDISPLAY s->display.x->v_thumbdown);
-          XClearWindow (XDISPLAY s->display.x->v_slider);
+          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 (s->display.x->h_scrollbar)
+      if (f->display.x->h_scrollbar)
         {
           Pixmap left_arrow_pixmap, right_arrow_pixmap, slider_pixmap;
 
-          XSetWindowBackground (x_current_display, s->display.x->h_scrollbar,
-				s->display.x->background_pixel);
+          XSetWindowBackground (x_current_display, f->display.x->h_scrollbar,
+				f->display.x->background_pixel);
 
           slider_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 gray_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
 
           left_arrow_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 up_arrow_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
           right_arrow_pixmap =
-            XCreatePixmapFromBitmapData (XDISPLAY s->display.x->window_desc,
+            XCreatePixmapFromBitmapData (XDISPLAY f->display.x->window_desc,
 					 down_arrow_bits, 16, 16,
-					 s->display.x->foreground_pixel,
-					 s->display.x->background_pixel,
+					 f->display.x->foreground_pixel,
+					 f->display.x->background_pixel,
 					 DefaultDepth (x_current_display,
 						       XDefaultScreen (x_current_display)));
 
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->h_slider,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_slider,
 				      slider_pixmap);
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->h_thumbleft,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_thumbleft,
 				      left_arrow_pixmap);
-          XSetWindowBackgroundPixmap (XDISPLAY s->display.x->h_thumbright,
+          XSetWindowBackgroundPixmap (XDISPLAY f->display.x->h_thumbright,
 				      right_arrow_pixmap);
 
-          XClearWindow (XDISPLAY s->display.x->h_thumbleft);
-          XClearWindow (XDISPLAY s->display.x->h_thumbright);
-          XClearWindow (XDISPLAY s->display.x->h_slider);
+          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 (s->display.x->background_pixel);
-      XChangeBackground (s->display.x->window_desc, temp);
+      temp = XMakeTile (f->display.x->background_pixel);
+      XChangeBackground (f->display.x->window_desc, temp);
       XFreePixmap (temp);
 #endif				/* not HAVE_X11 */
       UNBLOCK_INPUT;
 
-      if (s->visible)
-        redraw_screen (s);
+      if (f->visible)
+        redraw_frame (f);
     }
 }
 
 void
-x_set_mouse_color (s, arg, oldval)
-     struct screen *s;
+x_set_mouse_color (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
   Cursor cursor, nontext_cursor, mode_cursor;
   int mask_color;
 
   if (!EQ (Qnil, arg))
-    s->display.x->mouse_pixel = x_decode_color (arg, BLACK_PIX_DEFAULT);
-  mask_color = s->display.x->background_pixel;
+    f->display.x->mouse_pixel = x_decode_color (arg, BLACK_PIX_DEFAULT);
+  mask_color = f->display.x->background_pixel;
 				/* No invisible pointers. */
-  if (mask_color == s->display.x->mouse_pixel
-	&& mask_color == s->display.x->background_pixel)
-    s->display.x->mouse_pixel = s->display.x->foreground_pixel;
+  if (mask_color == f->display.x->mouse_pixel
+	&& mask_color == f->display.x->background_pixel)
+    f->display.x->mouse_pixel = f->display.x->foreground_pixel;
 
   BLOCK_INPUT;
 #ifdef HAVE_X11
@@ -777,7 +777,7 @@
   {
     XColor fore_color, back_color;
 
-    fore_color.pixel = s->display.x->mouse_pixel;
+    fore_color.pixel = f->display.x->mouse_pixel;
     back_color.pixel = mask_color;
     XQueryColor (x_current_display,
 		 DefaultColormap (x_current_display,
@@ -797,29 +797,29 @@
 #else /* X10 */
   cursor = XCreateCursor (16, 16, MouseCursor, MouseMask,
 			  0, 0,
-			  s->display.x->mouse_pixel,
-			  s->display.x->background_pixel,
+			  f->display.x->mouse_pixel,
+			  f->display.x->background_pixel,
 			  GXcopy);
 #endif /* X10 */
 
-  if (s->display.x->window_desc != 0)
+  if (f->display.x->window_desc != 0)
     {
-      XDefineCursor (XDISPLAY s->display.x->window_desc, cursor);
+      XDefineCursor (XDISPLAY f->display.x->window_desc, cursor);
     }
 
-  if (cursor != s->display.x->text_cursor && s->display.x->text_cursor != 0)
-      XFreeCursor (XDISPLAY s->display.x->text_cursor);
-  s->display.x->text_cursor = cursor;
+  if (cursor != f->display.x->text_cursor && f->display.x->text_cursor != 0)
+      XFreeCursor (XDISPLAY f->display.x->text_cursor);
+  f->display.x->text_cursor = cursor;
 #ifdef HAVE_X11
-  if (nontext_cursor != s->display.x->nontext_cursor
-      && s->display.x->nontext_cursor != 0)
-      XFreeCursor (XDISPLAY s->display.x->nontext_cursor);
-  s->display.x->nontext_cursor = nontext_cursor;
-
-  if (mode_cursor != s->display.x->modeline_cursor
-      && s->display.x->modeline_cursor != 0)
-      XFreeCursor (XDISPLAY s->display.x->modeline_cursor);
-  s->display.x->modeline_cursor = mode_cursor;
+  if (nontext_cursor != f->display.x->nontext_cursor
+      && f->display.x->nontext_cursor != 0)
+      XFreeCursor (XDISPLAY f->display.x->nontext_cursor);
+  f->display.x->nontext_cursor = nontext_cursor;
+
+  if (mode_cursor != f->display.x->modeline_cursor
+      && f->display.x->modeline_cursor != 0)
+      XFreeCursor (XDISPLAY f->display.x->modeline_cursor);
+  f->display.x->modeline_cursor = mode_cursor;
 #endif	/* HAVE_X11 */
 
   XFlushQueue ();
@@ -827,8 +827,8 @@
 }
 
 void
-x_set_cursor_color (s, arg, oldval)
-     struct screen *s;
+x_set_cursor_color (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
   unsigned long fore_pixel;
@@ -836,40 +836,40 @@
   if (!EQ (Vx_cursor_fore_pixel, Qnil))
     fore_pixel = x_decode_color (Vx_cursor_fore_pixel, WHITE_PIX_DEFAULT);
   else
-    fore_pixel = s->display.x->background_pixel;
-  s->display.x->cursor_pixel = x_decode_color (arg, BLACK_PIX_DEFAULT);
+    fore_pixel = f->display.x->background_pixel;
+  f->display.x->cursor_pixel = x_decode_color (arg, BLACK_PIX_DEFAULT);
 				/* No invisible cursors */
-  if (s->display.x->cursor_pixel == s->display.x->background_pixel)
+  if (f->display.x->cursor_pixel == f->display.x->background_pixel)
     {
-      s->display.x->cursor_pixel == s->display.x->mouse_pixel;
-      if (s->display.x->cursor_pixel == fore_pixel)
-	fore_pixel = s->display.x->background_pixel;
+      f->display.x->cursor_pixel == f->display.x->mouse_pixel;
+      if (f->display.x->cursor_pixel == fore_pixel)
+	fore_pixel = f->display.x->background_pixel;
     }
 
-  if (s->display.x->window_desc != 0)
+  if (f->display.x->window_desc != 0)
     {
 #ifdef HAVE_X11
       BLOCK_INPUT;
-      XSetBackground (x_current_display, s->display.x->cursor_gc,
-		      s->display.x->cursor_pixel);
-      XSetForeground (x_current_display, s->display.x->cursor_gc,
+      XSetBackground (x_current_display, f->display.x->cursor_gc,
+		      f->display.x->cursor_pixel);
+      XSetForeground (x_current_display, f->display.x->cursor_gc,
 		      fore_pixel);
       UNBLOCK_INPUT;
 #endif /* HAVE_X11 */
 
-      if (s->visible)
+      if (f->visible)
 	{
-	  x_display_cursor (s, 0);
-	  x_display_cursor (s, 1);
+	  x_display_cursor (f, 0);
+	  x_display_cursor (f, 1);
 	}
     }
 }
 
-/* Set the border-color of screen S to value described by ARG.
+/* Set the border-color of frame F to value described by ARG.
    ARG can be a string naming a color.
    The border-color is used for the border that is drawn by the X server.
    Note that this does not fully take effect if done before
-   S has an x-window; it must be redone when the window is created.
+   F has an x-window; it must be redone when the window is created.
 
    Note: this is done in two routines because of the way X10 works.
 
@@ -877,8 +877,8 @@
    and so emacs' border colors may be overridden. */
 
 void
-x_set_border_color (s, arg, oldval)
-     struct screen *s;
+x_set_border_color (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
   unsigned char *str;
@@ -896,33 +896,33 @@
 
     pix = x_decode_color (arg, BLACK_PIX_DEFAULT);
 
-  x_set_border_pixel (s, pix);
+  x_set_border_pixel (f, pix);
 }
 
-/* Set the border-color of screen S to pixel value PIX.
+/* Set the border-color of frame F to pixel value PIX.
    Note that this does not fully take effect if done before
-   S has an x-window.  */
-
-x_set_border_pixel (s, pix)
-     struct screen *s;
+   F has an x-window.  */
+
+x_set_border_pixel (f, pix)
+     struct frame *f;
      int pix;
 {
-  s->display.x->border_pixel = pix;
-
-  if (s->display.x->window_desc != 0 && s->display.x->border_width > 0)
+  f->display.x->border_pixel = pix;
+
+  if (f->display.x->window_desc != 0 && f->display.x->border_width > 0)
     {
       Pixmap temp;
       int mask;
 
       BLOCK_INPUT;
 #ifdef HAVE_X11
-      XSetWindowBorder (x_current_display, s->display.x->window_desc,
+      XSetWindowBorder (x_current_display, f->display.x->window_desc,
        		 pix);
-      if (s->display.x->h_scrollbar)
-        XSetWindowBorder (x_current_display, s->display.x->h_slider,
+      if (f->display.x->h_scrollbar)
+        XSetWindowBorder (x_current_display, f->display.x->h_slider,
        		   pix);
-      if (s->display.x->v_scrollbar)
-        XSetWindowBorder (x_current_display, s->display.x->v_slider,
+      if (f->display.x->v_scrollbar)
+        XSetWindowBorder (x_current_display, f->display.x->v_slider,
        		   pix);
 #else
       if (pix < 0)
@@ -930,19 +930,19 @@
        		     BLACK_PIX_DEFAULT, WHITE_PIX_DEFAULT);
       else
         temp = XMakeTile (pix);
-      XChangeBorder (s->display.x->window_desc, temp);
+      XChangeBorder (f->display.x->window_desc, temp);
       XFreePixmap (XDISPLAY temp);
 #endif /* not HAVE_X11 */
       UNBLOCK_INPUT;
 
-      if (s->visible)
-        redraw_screen (s);
+      if (f->visible)
+        redraw_frame (f);
     }
 }
 
 void
-x_set_icon_type (s, arg, oldval)
-     struct screen *s;
+x_set_icon_type (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
   Lisp_Object tem;
@@ -953,9 +953,9 @@
 
   BLOCK_INPUT;
   if (NILP (arg))
-    result = x_text_icon (s, 0);
+    result = x_text_icon (f, 0);
   else
-    result = x_bitmap_icon (s, 0);
+    result = x_bitmap_icon (f, 0);
 
   if (result)
     {
@@ -965,16 +965,16 @@
 
   /* If the window was unmapped (and its icon was mapped),
      the new icon is not mapped, so map the window in its stead.  */
-  if (s->visible)
-    XMapWindow (XDISPLAY s->display.x->window_desc);
+  if (f->visible)
+    XMapWindow (XDISPLAY f->display.x->window_desc);
 
   XFlushQueue ();
   UNBLOCK_INPUT;
 }
 
 void
-x_set_font (s, arg, oldval)
-     struct screen *s;
+x_set_font (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
   unsigned char *name;
@@ -984,7 +984,7 @@
   name = XSTRING (arg)->data;
 
   BLOCK_INPUT;
-  result = x_new_font (s, name);
+  result = x_new_font (f, name);
   UNBLOCK_INPUT;
   
   if (result)
@@ -992,62 +992,62 @@
 }
 
 void
-x_set_border_width (s, arg, oldval)
-     struct screen *s;
+x_set_border_width (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
   CHECK_NUMBER (arg, 0);
 
-  if (XINT (arg) == s->display.x->border_width)
+  if (XINT (arg) == f->display.x->border_width)
     return;
 
-  if (s->display.x->window_desc != 0)
+  if (f->display.x->window_desc != 0)
     error ("Cannot change the border width of a window");
 
-  s->display.x->border_width = XINT (arg);
+  f->display.x->border_width = XINT (arg);
 }
 
 void
-x_set_internal_border_width (s, arg, oldval)
-     struct screen *s;
+x_set_internal_border_width (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
   int mask;
-  int old = s->display.x->internal_border_width;
+  int old = f->display.x->internal_border_width;
 
   CHECK_NUMBER (arg, 0);
-  s->display.x->internal_border_width = XINT (arg);
-  if (s->display.x->internal_border_width < 0)
-    s->display.x->internal_border_width = 0;
-
-  if (s->display.x->internal_border_width == old)
+  f->display.x->internal_border_width = XINT (arg);
+  if (f->display.x->internal_border_width < 0)
+    f->display.x->internal_border_width = 0;
+
+  if (f->display.x->internal_border_width == old)
     return;
 
-  if (s->display.x->window_desc != 0)
+  if (f->display.x->window_desc != 0)
     {
       BLOCK_INPUT;
-      x_set_window_size (s, s->width, s->height);
+      x_set_window_size (f, f->width, f->height);
 #if 0
-      x_set_resize_hint (s);
+      x_set_resize_hint (f);
 #endif
       XFlushQueue ();
       UNBLOCK_INPUT;
-      SET_SCREEN_GARBAGED (s);
+      SET_FRAME_GARBAGED (f);
     }
 }
 
 void
-x_set_name (s, arg, oldval)
-     struct screen *s;
+x_set_name (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
   CHECK_STRING (arg, 0);
 
   /* Don't change the name if it's already ARG.  */
-  if (! NILP (Fstring_equal (arg, s->name)))
+  if (! NILP (Fstring_equal (arg, f->name)))
     return;
 
-  if (s->display.x->window_desc)
+  if (f->display.x->window_desc)
     {
 #ifdef HAVE_X11
       XTextProperty prop;
@@ -1056,43 +1056,43 @@
       prop.format = 8;
       prop.nitems = XSTRING (arg)->size;
       BLOCK_INPUT;
-      XSetWMName (XDISPLAY s->display.x->window_desc, &prop);
-      XSetWMIconName (XDISPLAY s->display.x->window_desc, &prop);
+      XSetWMName (XDISPLAY f->display.x->window_desc, &prop);
+      XSetWMIconName (XDISPLAY f->display.x->window_desc, &prop);
       UNBLOCK_INPUT;
 #else
       BLOCK_INPUT;
-      XStoreName (XDISPLAY s->display.x->window_desc,
+      XStoreName (XDISPLAY f->display.x->window_desc,
 		  (char *) XSTRING (arg)->data);
-      XSetIconName (XDISPLAY s->display.x->window_desc,
+      XSetIconName (XDISPLAY f->display.x->window_desc,
 		    (char *) XSTRING (arg)->data);
       UNBLOCK_INPUT;
 #endif
     }
 
-  s->name = arg;
+  f->name = arg;
 }
 
 void
-x_set_autoraise (s, arg, oldval)
-     struct screen *s;
+x_set_autoraise (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
-  s->auto_raise = !EQ (Qnil, arg);
+  f->auto_raise = !EQ (Qnil, arg);
 }
 
 void
-x_set_autolower (s, arg, oldval)
-     struct screen *s;
+x_set_autolower (f, arg, oldval)
+     struct frame *f;
      Lisp_Object arg, oldval;
 {
-  s->auto_lower = !EQ (Qnil, arg);
+  f->auto_lower = !EQ (Qnil, arg);
 }
 
 #ifdef HAVE_X11
 int n_faces;
 
 x_set_face (scr, font, background, foreground, stipple)
-     struct screen *scr;
+     struct frame *scr;
      XFontStruct *font;
      unsigned long background, foreground;
      Pixmap stipple;
@@ -1166,15 +1166,15 @@
   XGCValues gc_values;
 
   /* Need to do something about this. */
-  Drawable drawable = selected_screen->display.x->window_desc;
+  Drawable drawable = selected_frame->display.x->window_desc;
 
   CHECK_NUMBER (face_code, 1);
   CHECK_STRING (font_name,  2);
 
   if (EQ (foreground, Qnil) || EQ (background, Qnil))
     {
-      fg = selected_screen->display.x->foreground_pixel;
-      bg = selected_screen->display.x->background_pixel;
+      fg = selected_frame->display.x->foreground_pixel;
+      bg = selected_frame->display.x->background_pixel;
     }
   else
     {
@@ -1318,7 +1318,7 @@
 }
 #endif /* 0 */
 
-/* Subroutines of creating an X screen.  */
+/* Subroutines of creating an X frame.  */
 
 #ifdef HAVE_X11
 extern char *x_get_string_resource ();
@@ -1422,7 +1422,7 @@
 
 /* Return the value of parameter PARAM.
 
-   First search ALIST, then Vdefault_screen_alist, then the X defaults
+   First search ALIST, then Vdefault_frame_alist, then the X defaults
    database, using ATTRIBUTE as the attribute name.
 
    Convert the resource to the type specified by desired_type.
@@ -1439,7 +1439,7 @@
 
   tem = Fassq (param, alist);
   if (EQ (tem, Qnil))
-    tem = Fassq (param, Vdefault_screen_alist);
+    tem = Fassq (param, Vdefault_frame_alist);
   if (EQ (tem, Qnil) && attribute)
     {
       tem = Fx_get_resource (build_string (attribute), Qnil, Qnil);
@@ -1470,15 +1470,15 @@
   return Fcdr (tem);
 }
 
-/* Record in screen S the specified or default value according to ALIST
+/* Record in frame F the specified or default value according to ALIST
    of the parameter named PARAM (a Lisp symbol).
    If no value is specified for PARAM, look for an X default for XPROP
-   on the screen named NAME.
+   on the frame named NAME.
    If that is not found either, use the value DEFLT.  */
 
 static Lisp_Object
-x_default_parameter (s, alist, propname, deflt, xprop, type)
-     struct screen *s;
+x_default_parameter (f, alist, propname, deflt, xprop, type)
+     struct frame *f;
      Lisp_Object alist;
      char *propname;
      Lisp_Object deflt;
@@ -1491,8 +1491,8 @@
   tem = x_get_arg (alist, propsym, xprop, type);
   if (EQ (tem, Qnil))
     tem = deflt;
-  store_screen_param (s, propsym, tem);
-  x_set_screen_param (s, propsym, tem, Qnil);
+  store_frame_param (f, propsym, tem);
+  x_set_frame_param (f, propsym, tem, Qnil);
   return tem;
 }
 
@@ -1558,8 +1558,8 @@
 #define DEFAULT_COLS 80
 
 static
-x_figure_window_size (s, parms)
-     struct screen *s;
+x_figure_window_size (f, parms)
+     struct frame *f;
      Lisp_Object parms;
 {
   register Lisp_Object tem0, tem1;
@@ -1570,10 +1570,10 @@
   /* Default values if we fall through.
      Actually, if that happens we should get
      window manager prompting. */
-  s->width = DEFAULT_COLS;
-  s->height = DEFAULT_ROWS;
-  s->display.x->top_pos = 1;
-  s->display.x->left_pos = 1;
+  f->width = DEFAULT_COLS;
+  f->height = DEFAULT_ROWS;
+  f->display.x->top_pos = 1;
+  f->display.x->left_pos = 1;
 
   tem0 = x_get_arg (parms, intern ("height"), 0, 0);
   tem1 = x_get_arg (parms, intern ("width"), 0, 0);
@@ -1581,17 +1581,17 @@
     {
       CHECK_NUMBER (tem0, 0);
       CHECK_NUMBER (tem1, 0);
-      s->height = XINT (tem0);
-      s->width = XINT (tem1);
+      f->height = XINT (tem0);
+      f->width = XINT (tem1);
       window_prompting |= USSize;
     }
   else if (! EQ (tem0, Qnil) || ! EQ (tem1, Qnil))
     error ("Must specify *both* height and width");
 
-  s->display.x->pixel_width = (FONT_WIDTH (s->display.x->font) * s->width
-			       + 2 * s->display.x->internal_border_width);
-  s->display.x->pixel_height = (FONT_HEIGHT (s->display.x->font) * s->height
-				+ 2 * s->display.x->internal_border_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);
 
   tem0 = x_get_arg (parms, intern ("top"), 0, 0);
   tem1 = x_get_arg (parms, intern ("left"), 0, 0);
@@ -1599,9 +1599,9 @@
     {
       CHECK_NUMBER (tem0, 0);
       CHECK_NUMBER (tem1, 0);
-      s->display.x->top_pos = XINT (tem0);
-      s->display.x->left_pos = XINT (tem1);
-      x_calc_absolute_position (s);
+      f->display.x->top_pos = XINT (tem0);
+      f->display.x->left_pos = XINT (tem1);
+      x_calc_absolute_position (f);
       window_prompting |= USPosition;
     }
   else if (! EQ (tem0, Qnil) || ! EQ (tem1, Qnil))
@@ -1636,15 +1636,15 @@
 }
 
 static void
-x_window (s)
-     struct screen *s;
+x_window (f)
+     struct frame *f;
 {
   XSetWindowAttributes attributes;
   unsigned long attribute_mask;
   XClassHint class_hints;
 
-  attributes.background_pixel = s->display.x->background_pixel;
-  attributes.border_pixel = s->display.x->border_pixel;
+  attributes.background_pixel = f->display.x->background_pixel;
+  attributes.border_pixel = f->display.x->border_pixel;
   attributes.bit_gravity = StaticGravity;
   attributes.backing_store = NotUseful;
   attributes.save_under = True;
@@ -1656,26 +1656,26 @@
 		    | CWEventMask);
 
   BLOCK_INPUT;
-  s->display.x->window_desc
+  f->display.x->window_desc
     = XCreateWindow (x_current_display, ROOT_WINDOW,
-		     s->display.x->left_pos,
-		     s->display.x->top_pos,
-		     PIXEL_WIDTH (s), PIXEL_HEIGHT (s),
-		     s->display.x->border_width,
+		     f->display.x->left_pos,
+		     f->display.x->top_pos,
+		     PIXEL_WIDTH (f), PIXEL_HEIGHT (f),
+		     f->display.x->border_width,
 		     CopyFromParent, /* depth */
 		     InputOutput, /* class */
 		     screen_visual, /* set in Fx_open_connection */
 		     attribute_mask, &attributes);
 
-  class_hints.res_name = (char *) XSTRING (s->name)->data;
+  class_hints.res_name = (char *) XSTRING (f->name)->data;
   class_hints.res_class = EMACS_CLASS;
-  XSetClassHint (x_current_display, s->display.x->window_desc, &class_hints);
-
-  XDefineCursor (XDISPLAY s->display.x->window_desc,
-		 s->display.x->text_cursor);
+  XSetClassHint (x_current_display, f->display.x->window_desc, &class_hints);
+
+  XDefineCursor (XDISPLAY f->display.x->window_desc,
+		 f->display.x->text_cursor);
   UNBLOCK_INPUT;
 
-  if (s->display.x->window_desc == 0)
+  if (f->display.x->window_desc == 0)
     error ("Unable to create window.");
 }
 
@@ -1684,8 +1684,8 @@
    well. */
 
 static void
-x_icon (s, parms)
-     struct screen *s;
+x_icon (f, parms)
+     struct frame *f;
      Lisp_Object parms;
 {
   register Lisp_Object tem0,tem1;
@@ -1706,8 +1706,8 @@
     error ("Both left and top icon corners of icon must be specified");
   else
     {
-      hints.icon_x = s->display.x->left_pos;
-      hints.icon_y = s->display.x->top_pos;
+      hints.icon_x = f->display.x->left_pos;
+      hints.icon_y = f->display.x->top_pos;
     }
 
   /* Start up iconic or window? */
@@ -1720,7 +1720,7 @@
 
   BLOCK_INPUT;
   hints.flags = StateHint | IconPositionHint | InputHint;
-  XSetWMHints (x_current_display, s->display.x->window_desc, &hints);
+  XSetWMHints (x_current_display, f->display.x->window_desc, &hints);
   UNBLOCK_INPUT;
 }
 
@@ -1729,8 +1729,8 @@
    mouse cursor and the gray border tile.  */
 
 static void
-x_make_gc (s)
-     struct screen *s;
+x_make_gc (f)
+     struct frame *f;
 {
   XGCValues gc_values;
   GC temp_gc;
@@ -1743,53 +1743,53 @@
       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
     };
 
-  /* Create the GC's of this screen.
+  /* Create the GC's of this frame.
      Note that many default values are used. */
 
   /* Normal video */
-  gc_values.font = s->display.x->font->fid;
-  gc_values.foreground = s->display.x->foreground_pixel;
-  gc_values.background = s->display.x->background_pixel;
+  gc_values.font = f->display.x->font->fid;
+  gc_values.foreground = f->display.x->foreground_pixel;
+  gc_values.background = f->display.x->background_pixel;
   gc_values.line_width = 0;	/* Means 1 using fast algorithm. */
-  s->display.x->normal_gc = XCreateGC (x_current_display,
-				       s->display.x->window_desc,
+  f->display.x->normal_gc = XCreateGC (x_current_display,
+				       f->display.x->window_desc,
 				       GCLineWidth | GCFont
 				       | GCForeground | GCBackground,
 				       &gc_values);
 
   /* Reverse video style. */
-  gc_values.foreground = s->display.x->background_pixel;
-  gc_values.background = s->display.x->foreground_pixel;
-  s->display.x->reverse_gc = XCreateGC (x_current_display,
-					s->display.x->window_desc,
+  gc_values.foreground = f->display.x->background_pixel;
+  gc_values.background = f->display.x->foreground_pixel;
+  f->display.x->reverse_gc = XCreateGC (x_current_display,
+					f->display.x->window_desc,
 					GCFont | GCForeground | GCBackground
 					| GCLineWidth,
 					&gc_values);
 
   /* Cursor has cursor-color background, background-color foreground. */
-  gc_values.foreground = s->display.x->background_pixel;
-  gc_values.background = s->display.x->cursor_pixel;
+  gc_values.foreground = f->display.x->background_pixel;
+  gc_values.background = f->display.x->cursor_pixel;
   gc_values.fill_style = FillOpaqueStippled;
   gc_values.stipple
     = XCreateBitmapFromData (x_current_display, ROOT_WINDOW,
 			     cursor_bits, 16, 16);
-  s->display.x->cursor_gc
-    = XCreateGC (x_current_display, s->display.x->window_desc,
+  f->display.x->cursor_gc
+    = XCreateGC (x_current_display, f->display.x->window_desc,
 		 (GCFont | GCForeground | GCBackground
 		  | GCFillStyle | GCStipple | GCLineWidth),
 		 &gc_values);
 
   /* Create the gray border tile used when the pointer is not in
-     the screen.  Since this depends on the screen's pixel values,
-     this must be done on a per-screen basis. */
-  s->display.x->border_tile =
+     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 = s->display.x->foreground_pixel;
-  gc_values.background = s->display.x->background_pixel;
+  gc_values.foreground = f->display.x->foreground_pixel;
+  gc_values.background = f->display.x->background_pixel;
   temp_gc = XCreateGC (x_current_display,
-		       (Drawable) s->display.x->border_tile,
+		       (Drawable) f->display.x->border_tile,
 		       GCForeground | GCBackground, &gc_values);
 
   /* These are things that should be determined by the server, in
@@ -1805,27 +1805,27 @@
   tileimage.bitmap_pad = 8;
   tileimage.bytes_per_line = (16 + 7) >> 3;
   tileimage.depth = 1;
-  XPutImage (x_current_display, s->display.x->border_tile, temp_gc,
+  XPutImage (x_current_display, f->display.x->border_tile, temp_gc,
 	     &tileimage, 0, 0, 0, 0, 16, 16);
   XFreeGC (x_current_display, temp_gc);
 }
 #endif /* HAVE_X11 */
 
-DEFUN ("x-create-screen", Fx_create_screen, Sx_create_screen,
+DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
        1, 1, 0,
-  "Make a new X window, which is called a \"screen\" in Emacs terms.\n\
-Return an Emacs screen object representing the X window.\n\
-ALIST is an alist of screen parameters.\n\
-If the parameters specify that the screen should not have a minibuffer,\n\
+  "Make a new X window, which is called a \"frame\" in Emacs terms.\n\
+Return an Emacs frame object representing the X window.\n\
+ALIST is an alist of frame parameters.\n\
+If the parameters specify that the frame should not have a minibuffer,\n\
 and do not specify a specific minibuffer window to use,\n\
-then `default-minibuffer-screen' must be a screen whose minibuffer can\n\
-be shared by the new screen.")
+then `default-minibuffer-frame' must be a frame whose minibuffer can\n\
+be shared by the new frame.")
   (parms)
      Lisp_Object parms;
 {
 #ifdef HAVE_X11
-  struct screen *s;
-  Lisp_Object screen, tem;
+  struct frame *f;
+  Lisp_Object frame, tem;
   Lisp_Object name;
   int minibuffer_only = 0;
   long window_prompting = 0;
@@ -1838,92 +1838,92 @@
   if (NILP (name))
     name = build_string (x_id_name);
   if (XTYPE (name) != Lisp_String)
-    error ("x-create-screen: name parameter must be a string");
+    error ("x-create-frame: name parameter must be a string");
 
   tem = x_get_arg (parms, intern ("minibuffer"), 0, 0);
   if (EQ (tem, intern ("none")))
-    s = make_screen_without_minibuffer (Qnil);
+    f = make_frame_without_minibuffer (Qnil);
   else if (EQ (tem, intern ("only")))
     {
-      s = make_minibuffer_screen ();
+      f = make_minibuffer_frame ();
       minibuffer_only = 1;
     }
   else if (EQ (tem, Qnil) || EQ (tem, Qt))
-    s = make_screen (1);
+    f = make_frame (1);
   else
-    s = make_screen_without_minibuffer (tem);
-
-  /* Set the name; the functions to which we pass s expect the
+    f = make_frame_without_minibuffer (tem);
+
+  /* Set the name; the functions to which we pass f expect the
      name to be set.  */
-  XSET (s->name, Lisp_String, name);
-
-  XSET (screen, Lisp_Screen, s);
-  s->output_method = output_x_window;
-  s->display.x = (struct x_display *) xmalloc (sizeof (struct x_display));
-  bzero (s->display.x, sizeof (struct x_display));
-
-  /* Note that the screen has no physical cursor right now.  */
-  s->phys_cursor_x = -1;
+  XSET (f->name, Lisp_String, name);
+
+  XSET (frame, Lisp_Frame, f);
+  f->output_method = output_x_window;
+  f->display.x = (struct x_display *) xmalloc (sizeof (struct x_display));
+  bzero (f->display.x, sizeof (struct x_display));
+
+  /* Note that the frame has no physical cursor right now.  */
+  f->phys_cursor_x = -1;
 
   /* Extract the window parameters from the supplied values
      that are needed to determine window geometry.  */
-  x_default_parameter (s, parms, "font",
+  x_default_parameter (f, parms, "font",
 		       build_string ("9x15"), "font", string);
-  x_default_parameter (s, parms, "background-color",
+  x_default_parameter (f, parms, "background-color",
 		      build_string ("white"), "background", string);
-  x_default_parameter (s, parms, "border-width",
+  x_default_parameter (f, parms, "border-width",
 		      make_number (2), "BorderWidth", number);
   /* This defaults to 2 in order to match XTerms.  */
-  x_default_parameter (s, parms, "internal-border-width",
+  x_default_parameter (f, parms, "internal-border-width",
 		      make_number (2), "InternalBorderWidth", number);
 
   /* Also do the stuff which must be set before the window exists. */
-  x_default_parameter (s, parms, "foreground-color",
+  x_default_parameter (f, parms, "foreground-color",
 		       build_string ("black"), "foreground", string);
-  x_default_parameter (s, parms, "mouse-color",
+  x_default_parameter (f, parms, "mouse-color",
 		      build_string ("black"), "mouse", string);
-  x_default_parameter (s, parms, "cursor-color",
+  x_default_parameter (f, parms, "cursor-color",
 		      build_string ("black"), "cursor", string);
-  x_default_parameter (s, parms, "border-color",
+  x_default_parameter (f, parms, "border-color",
 		      build_string ("black"), "border", string);
 
   /* Need to do icon type, auto-raise, auto-lower. */
 
-  s->display.x->parent_desc = ROOT_WINDOW;
-  window_prompting = x_figure_window_size (s, parms);
-
-  x_window (s);
-  x_icon (s, parms);
-  x_make_gc (s);
-
-  /* Dimensions, especially s->height, must be done via change_screen_size.
+  f->display.x->parent_desc = ROOT_WINDOW;
+  window_prompting = x_figure_window_size (f, parms);
+
+  x_window (f);
+  x_icon (f, parms);
+  x_make_gc (f);
+
+  /* Dimensions, especially f->height, must be done via change_frame_size.
      Change will not be effected unless different from the current
-     s->height. */
-  width = s->width;
-  height = s->height;
-  s->height = s->width = 0;
-  change_screen_size (s, height, width, 1);
+     f->height. */
+  width = f->width;
+  height = f->height;
+  f->height = f->width = 0;
+  change_frame_size (f, height, width, 1);
   BLOCK_INPUT;
-  x_wm_set_size_hint (s, window_prompting);
+  x_wm_set_size_hint (f, window_prompting);
   UNBLOCK_INPUT;
 
   tem = x_get_arg (parms, intern ("unsplittable"), 0, 0);
-  s->no_split = minibuffer_only || EQ (tem, Qt);
+  f->no_split = minibuffer_only || EQ (tem, Qt);
 
   /* Now handle the rest of the parameters. */
-  x_default_parameter (s, parms, "horizontal-scroll-bar",
+  x_default_parameter (f, parms, "horizontal-scroll-bar",
 		       Qnil, "?HScrollBar", string);
-  x_default_parameter (s, parms, "vertical-scroll-bar",
+  x_default_parameter (f, parms, "vertical-scroll-bar",
 		       Qnil, "?VScrollBar", string);
 
-  /* Make the window appear on the screen and enable display.  */
+  /* Make the window appear on the frame and enable display.  */
   if (!EQ (x_get_arg (parms, intern ("suppress-initial-map"), 0, 0), Qt))
-    x_make_screen_visible (s);
-
-  return screen;
+    x_make_frame_visible (f);
+
+  return frame;
 #else /* X10 */
-  struct screen *s;
-  Lisp_Object screen, tem;
+  struct frame *f;
+  Lisp_Object frame, tem;
   Lisp_Object name;
   int pixelwidth, pixelheight;
   Cursor cursor;
@@ -1940,37 +1940,37 @@
 
   tem = x_get_arg (parms, intern ("minibuffer"), 0, 0);
   if (EQ (tem, intern ("none")))
-    s = make_screen_without_minibuffer (Qnil);
+    f = make_frame_without_minibuffer (Qnil);
   else if (EQ (tem, intern ("only")))
     {
-      s = make_minibuffer_screen ();
+      f = make_minibuffer_frame ();
       minibuffer_only = 1;
     }
   else if (! EQ (tem, Qnil))
-    s = make_screen_without_minibuffer (tem);
+    f = make_frame_without_minibuffer (tem);
   else
-    s = make_screen (1);
+    f = make_frame (1);
 
   parent = ROOT_WINDOW;
 
-  XSET (screen, Lisp_Screen, s);
-  s->output_method = output_x_window;
-  s->display.x = (struct x_display *) xmalloc (sizeof (struct x_display));
-  bzero (s->display.x, sizeof (struct x_display));
+  XSET (frame, Lisp_Frame, f);
+  f->output_method = output_x_window;
+  f->display.x = (struct x_display *) xmalloc (sizeof (struct x_display));
+  bzero (f->display.x, sizeof (struct x_display));
 
   /* Some temprorary default values for height and width. */
   width = 80;
   height = 40;
-  s->display.x->left_pos = -1;
-  s->display.x->top_pos = -1;
-
-  /* Give the screen a default name (which may be overridden with PARMS).  */
+  f->display.x->left_pos = -1;
+  f->display.x->top_pos = -1;
+
+  /* Give the frame a default name (which may be overridden with PARMS).  */
 
   strncpy (iconidentity, ICONTAG, MAXICID);
   if (gethostname (&iconidentity[sizeof (ICONTAG) - 1],
 		   (MAXICID - 1) - sizeof (ICONTAG)))
     iconidentity[sizeof (ICONTAG) - 2] = '\0';
-  s->name = build_string (iconidentity);
+  f->name = build_string (iconidentity);
 
   /* Extract some window parameters from the supplied values.
      These are the parameters that affect window geometry.  */
@@ -1978,29 +1978,29 @@
   tem = x_get_arg (parms, intern ("font"), "BodyFont", string);
   if (EQ (tem, Qnil))
     tem = build_string ("9x15");
-  x_set_font (s, tem);
-  x_default_parameter (s, parms, "border-color",
+  x_set_font (f, tem);
+  x_default_parameter (f, parms, "border-color",
 		      build_string ("black"), "Border", string);
-  x_default_parameter (s, parms, "background-color",
+  x_default_parameter (f, parms, "background-color",
 		      build_string ("white"), "Background", string);
-  x_default_parameter (s, parms, "foreground-color",
+  x_default_parameter (f, parms, "foreground-color",
 		      build_string ("black"), "Foreground", string);
-  x_default_parameter (s, parms, "mouse-color",
+  x_default_parameter (f, parms, "mouse-color",
 		      build_string ("black"), "Mouse", string);
-  x_default_parameter (s, parms, "cursor-color",
+  x_default_parameter (f, parms, "cursor-color",
 		      build_string ("black"), "Cursor", string);
-  x_default_parameter (s, parms, "border-width",
+  x_default_parameter (f, parms, "border-width",
 		      make_number (2), "BorderWidth", number);
-  x_default_parameter (s, parms, "internal-border-width",
+  x_default_parameter (f, parms, "internal-border-width",
 		      make_number (4), "InternalBorderWidth", number);
-  x_default_parameter (s, parms, "auto-raise",
+  x_default_parameter (f, parms, "auto-raise",
 		       Qnil, "AutoRaise", boolean);
 
   hscroll = x_get_arg (parms, intern ("horizontal-scroll-bar"), 0, 0);
   vscroll = x_get_arg (parms, intern ("vertical-scroll-bar"), 0, 0);
 
-  if (s->display.x->internal_border_width < 0)
-    s->display.x->internal_border_width = 0;
+  if (f->display.x->internal_border_width < 0)
+    f->display.x->internal_border_width = 0;
 
   tem = x_get_arg (parms, intern ("window-id"), 0, 0);
   if (!EQ (tem, Qnil))
@@ -2010,23 +2010,23 @@
       Window *children, root;
 
       CHECK_STRING (tem, 0);
-      s->display.x->window_desc = (Window) atoi (XSTRING (tem)->data);
+      f->display.x->window_desc = (Window) atoi (XSTRING (tem)->data);
 
       BLOCK_INPUT;
-      XGetWindowInfo (s->display.x->window_desc, &wininfo);
-      XQueryTree (s->display.x->window_desc, &parent, &nchildren, &children);
+      XGetWindowInfo (f->display.x->window_desc, &wininfo);
+      XQueryTree (f->display.x->window_desc, &parent, &nchildren, &children);
       free (children);
       UNBLOCK_INPUT;
 
-      height = (wininfo.height - 2 * s->display.x->internal_border_width)
-	/ FONT_HEIGHT (s->display.x->font);
-      width = (wininfo.width - 2 * s->display.x->internal_border_width)
-	/ FONT_WIDTH (s->display.x->font);
-      s->display.x->left_pos = wininfo.x;
-      s->display.x->top_pos = wininfo.y;
-      s->visible = wininfo.mapped != 0;
-      s->display.x->border_width = wininfo.bdrwidth;
-      s->display.x->parent_desc = parent;
+      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);
+      f->display.x->left_pos = wininfo.x;
+      f->display.x->top_pos = wininfo.y;
+      f->visible = wininfo.mapped != 0;
+      f->display.x->border_width = wininfo.bdrwidth;
+      f->display.x->parent_desc = parent;
     }
   else
     {
@@ -2036,7 +2036,7 @@
 	  CHECK_STRING (tem, 0);
 	  parent = (Window) atoi (XSTRING (tem)->data);
 	}
-      s->display.x->parent_desc = parent;
+      f->display.x->parent_desc = parent;
       tem = x_get_arg (parms, intern ("height"), 0, 0);
       if (EQ (tem, Qnil))
 	{
@@ -2053,12 +2053,12 @@
       if (EQ (tem, Qnil))
 	{
 	  tem = x_get_arg (parms, intern ("geometry"), 0, 0);
-	  x_rubber_band (s,
-			 &s->display.x->left_pos, &s->display.x->top_pos,
+	  x_rubber_band (f,
+			 &f->display.x->left_pos, &f->display.x->top_pos,
 			 &width, &height,
 			 (XTYPE (tem) == Lisp_String
 			  ? (char *) XSTRING (tem)->data : ""),
-			 XSTRING (s->name)->data,
+			 XSTRING (f->name)->data,
 			 !NILP (hscroll), !NILP (vscroll));
 	}
       else
@@ -2081,128 +2081,128 @@
 	  if (EQ (tem, Qnil))
 	    error ("Top position not specified");
 	  CHECK_NUMBER (tem, 0);
-	  s->display.x->left_pos = XINT (tem);
+	  f->display.x->left_pos = XINT (tem);
 
 	  tem = x_get_arg (parms, intern ("left"), 0, 0);
 	  if (EQ (tem, Qnil))
 	    error ("Left position not specified");
 	  CHECK_NUMBER (tem, 0);
-	  s->display.x->top_pos = XINT (tem);
+	  f->display.x->top_pos = XINT (tem);
 	}
 
-      pixelwidth = (width * FONT_WIDTH (s->display.x->font)
-		    + 2 * s->display.x->internal_border_width
+      pixelwidth = (width * FONT_WIDTH (f->display.x->font)
+		    + 2 * f->display.x->internal_border_width
 		    + (!NILP (vscroll) ? VSCROLL_WIDTH : 0));
-      pixelheight = (height * FONT_HEIGHT (s->display.x->font)
-		     + 2 * s->display.x->internal_border_width
+      pixelheight = (height * FONT_HEIGHT (f->display.x->font)
+		     + 2 * f->display.x->internal_border_width
 		     + (!NILP (hscroll) ? HSCROLL_HEIGHT : 0));
       
       BLOCK_INPUT;
-      s->display.x->window_desc
+      f->display.x->window_desc
 	= XCreateWindow (parent,
-			 s->display.x->left_pos,   /* Absolute horizontal offset */
-			 s->display.x->top_pos,    /* Absolute Vertical offset */
+			 f->display.x->left_pos,   /* Absolute horizontal offset */
+			 f->display.x->top_pos,    /* Absolute Vertical offset */
 			 pixelwidth, pixelheight,
-			 s->display.x->border_width,
+			 f->display.x->border_width,
 			 BLACK_PIX_DEFAULT, WHITE_PIX_DEFAULT);
       UNBLOCK_INPUT;
-      if (s->display.x->window_desc == 0)
+      if (f->display.x->window_desc == 0)
 	error ("Unable to create window.");
     }
 
   /* Install the now determined height and width
      in the windows and in phys_lines and desired_lines.  */
   /* ??? jla version had 1 here instead of 0.  */
-  change_screen_size (s, height, width, 1);
-  XSelectInput (s->display.x->window_desc, KeyPressed | ExposeWindow
+  change_frame_size (f, height, width, 1);
+  XSelectInput (f->display.x->window_desc, KeyPressed | ExposeWindow
 		| ButtonPressed | ButtonReleased | ExposeRegion | ExposeCopy
 		| EnterWindow | LeaveWindow | UnmapWindow );
-  x_set_resize_hint (s);
+  x_set_resize_hint (f);
 
   /* Tell the server the window's default name.  */
 #ifdef HAVE_X11
   {
     XTextProperty prop;
-    prop.value = XSTRING (s->name)->data;
+    prop.value = XSTRING (f->name)->data;
     prop.encoding = XA_STRING;
     prop.format = 8;
-    prop.nitems = XSTRING (s->name)->size;
-    XSetWMName (XDISPLAY s->display.x->window_desc, &prop);
+    prop.nitems = XSTRING (f->name)->size;
+    XSetWMName (XDISPLAY f->display.x->window_desc, &prop);
   }
 #else
-  XStoreName (XDISPLAY s->display.x->window_desc, XSTRING (s->name)->data);
+  XStoreName (XDISPLAY f->display.x->window_desc, XSTRING (f->name)->data);
 #endif
 
   /* Now override the defaults with all the rest of the specified
      parms.  */
   tem = x_get_arg (parms, intern ("unsplittable"), 0, 0);
-  s->no_split = minibuffer_only || EQ (tem, Qt);
+  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, intern ("suppress-icon"), 0, 0), Qt)
-      || s->display.x->parent_desc != ROOT_WINDOW)
+      || f->display.x->parent_desc != ROOT_WINDOW)
     {
-      x_text_icon (s, iconidentity);
-      x_default_parameter (s, parms, "icon-type", Qnil,
+      x_text_icon (f, iconidentity);
+      x_default_parameter (f, parms, "icon-type", Qnil,
 			   "BitmapIcon", boolean);
     }
 
   /* Tell the X server the previously set values of the
      background, border and mouse colors; also create the mouse cursor.  */
   BLOCK_INPUT;
-  temp = XMakeTile (s->display.x->background_pixel);
-  XChangeBackground (s->display.x->window_desc, temp);
+  temp = XMakeTile (f->display.x->background_pixel);
+  XChangeBackground (f->display.x->window_desc, temp);
   XFreePixmap (temp);
   UNBLOCK_INPUT;
-  x_set_border_pixel (s, s->display.x->border_pixel);
-
-  x_set_mouse_color (s, Qnil, Qnil);
+  x_set_border_pixel (f, f->display.x->border_pixel);
+
+  x_set_mouse_color (f, Qnil, Qnil);
 
   /* Now override the defaults with all the rest of the specified parms.  */
 
-  Fmodify_screen_parameters (screen, parms);
+  Fmodify_frame_parameters (frame, parms);
 
   if (!NILP (vscroll))
-    install_vertical_scrollbar (s, pixelwidth, pixelheight);
+    install_vertical_scrollbar (f, pixelwidth, pixelheight);
   if (!NILP (hscroll))
-    install_horizontal_scrollbar (s, pixelwidth, pixelheight);
-
-  /* Make the window appear on the screen and enable display.  */
+    install_horizontal_scrollbar (f, pixelwidth, pixelheight);
+
+  /* Make the window appear on the frame and enable display.  */
 
   if (!EQ (x_get_arg (parms, intern ("suppress-initial-map"), 0, 0), Qt))
-    x_make_window_visible (s);
-  SCREEN_GARBAGED (s);
-
-  return screen;
+    x_make_window_visible (f);
+  FRAME_GARBAGED (f);
+
+  return frame;
 #endif /* X10 */
 }
 
-DEFUN ("focus-screen", Ffocus_screen, Sfocus_screen, 1, 1, 0,
-  "Set the focus on SCREEN.")
-  (screen)
-     Lisp_Object screen;
+DEFUN ("focus-frame", Ffocus_frame, Sfocus_frame, 1, 1, 0,
+  "Set the focus on FRAME.")
+  (frame)
+     Lisp_Object frame;
 {
-  CHECK_LIVE_SCREEN (screen, 0);
-
-  if (SCREEN_IS_X (XSCREEN (screen)))
+  CHECK_LIVE_FRAME (frame, 0);
+
+  if (FRAME_IS_X (XFRAME (frame)))
     {
       BLOCK_INPUT;
-      x_focus_on_screen (XSCREEN (screen));
+      x_focus_on_frame (XFRAME (frame));
       UNBLOCK_INPUT;
-      return screen;
+      return frame;
     }
 
   return Qnil;
 }
 
-DEFUN ("unfocus-screen", Funfocus_screen, Sunfocus_screen, 0, 0, 0,
-  "If a screen has been focused, release it.")
+DEFUN ("unfocus-frame", Funfocus_frame, Sunfocus_frame, 0, 0, 0,
+  "If a frame has been focused, release it.")
   ()
 {
-  if (x_focus_screen)
+  if (x_focus_frame)
     {
       BLOCK_INPUT;
-      x_unfocus_screen (x_focus_screen);
+      x_unfocus_frame (x_focus_frame);
       UNBLOCK_INPUT;
     }
 
@@ -2213,7 +2213,7 @@
 /* Computes an X-window size and position either from geometry GEO
    or with the mouse.
 
-   S is a screen.  It specifies an X window which is used to
+   F is a frame.  It specifies an X window which is used to
    determine which display to compute for.  Its font, borders
    and colors control how the rectangle will be displayed.
 
@@ -2225,8 +2225,8 @@
    HSCROLL and VSCROLL say whether we have horiz and vert scroll bars.  */
 
 int
-x_rubber_band (s, x, y, width, height, geo, str, hscroll, vscroll)
-     struct screen *s;
+x_rubber_band (f, x, y, width, height, geo, str, hscroll, vscroll)
+     struct frame *f;
      int *x, *y, *width, *height;
      char *geo;
      char *str;
@@ -2242,20 +2242,20 @@
 
   BLOCK_INPUT;
 
-  background_color = s->display.x->background_pixel;
-  border_color = s->display.x->border_pixel;
-
-  frame.bdrwidth = s->display.x->border_width;
+  background_color = f->display.x->background_pixel;
+  border_color = f->display.x->border_pixel;
+
+  frame.bdrwidth = f->display.x->border_width;
   frame.border = XMakeTile (border_color);
   frame.background = XMakeTile (background_color);
   tempwindow = XCreateTerm (str, "emacs", geo, default_window, &frame, 10, 5,
-			    (2 * s->display.x->internal_border_width
+			    (2 * f->display.x->internal_border_width
 			     + (vscroll ? VSCROLL_WIDTH : 0)),
-			    (2 * s->display.x->internal_border_width
+			    (2 * f->display.x->internal_border_width
 			     + (hscroll ? HSCROLL_HEIGHT : 0)),
-			    width, height, s->display.x->font,
-			    FONT_WIDTH (s->display.x->font),
-			    FONT_HEIGHT (s->display.x->font));
+			    width, height, f->display.x->font,
+			    FONT_WIDTH (f->display.x->font),
+			    FONT_HEIGHT (f->display.x->font));
   XFreePixmap (frame.border);
   XFreePixmap (frame.background);
 
@@ -2270,7 +2270,7 @@
   /* Coordinates we got are relative to the root window.
      Convert them to coordinates relative to desired parent window
      by scanning from there up to the root.  */
-  tempwindow = s->display.x->parent_desc;
+  tempwindow = f->display.x->parent_desc;
   while (tempwindow != ROOT_WINDOW)
     {
       int nchildren;
@@ -2287,114 +2287,114 @@
 }
 #endif /* not HAVE_X11 */
 
-/* Set whether screen S has a horizontal scroll bar.
+/* Set whether frame F has a horizontal scroll bar.
    VAL is t or nil to specify it. */
 
 static void
-x_set_horizontal_scrollbar (s, val, oldval)
-     struct screen *s;
+x_set_horizontal_scrollbar (f, val, oldval)
+     struct frame *f;
      Lisp_Object val, oldval;
 {
   if (!NILP (val))
     {
-      if (s->display.x->window_desc != 0)
+      if (f->display.x->window_desc != 0)
 	{
 	  BLOCK_INPUT;
-	  s->display.x->h_scrollbar_height = HSCROLL_HEIGHT;
-	  x_set_window_size (s, s->width, s->height);
-	  install_horizontal_scrollbar (s);
-	  SET_SCREEN_GARBAGED (s);
+	  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 (s->display.x->h_scrollbar)
+    if (f->display.x->h_scrollbar)
       {
 	BLOCK_INPUT;
-	s->display.x->h_scrollbar_height = 0;
-	XDestroyWindow (XDISPLAY s->display.x->h_scrollbar);
-	s->display.x->h_scrollbar = 0;
-	x_set_window_size (s, s->width, s->height);
-	s->garbaged++;
-	screen_garbaged++;
+	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 screen S has a vertical scroll bar.
+/* Set whether frame F has a vertical scroll bar.
    VAL is t or nil to specify it. */
 
 static void
-x_set_vertical_scrollbar (s, val, oldval)
-     struct screen *s;
+x_set_vertical_scrollbar (f, val, oldval)
+     struct frame *f;
      Lisp_Object val, oldval;
 {
   if (!NILP (val))
     {
-      if (s->display.x->window_desc != 0)
+      if (f->display.x->window_desc != 0)
 	{
 	  BLOCK_INPUT;
-	  s->display.x->v_scrollbar_width = VSCROLL_WIDTH;
-	  x_set_window_size (s, s->width, s->height);
-	  install_vertical_scrollbar (s);
-	  SET_SCREEN_GARBAGED (s);
+	  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 (s->display.x->v_scrollbar != 0)
+    if (f->display.x->v_scrollbar != 0)
       {
 	BLOCK_INPUT;
-	s->display.x->v_scrollbar_width = 0;
-	XDestroyWindow (XDISPLAY s->display.x->v_scrollbar);
-	s->display.x->v_scrollbar = 0;
-	x_set_window_size (s, s->width, s->height);
-	SET_SCREEN_GARBAGED (s);
+	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;
       }
 }
 
 /* Create the X windows for a vertical scroll bar
-   for a screen X that already has an X window but no scroll bar.  */
+   for a frame X that already has an X window but no scroll bar.  */
 
 static void
-install_vertical_scrollbar (s)
-     struct screen *s;
+install_vertical_scrollbar (f)
+     struct frame *f;
 {
-  int ibw = s->display.x->internal_border_width;
+  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 = s->display.x->pixel_height - ibw - 2;
+  height = f->display.x->pixel_height - ibw - 2;
   width = VSCROLL_WIDTH - 2;
-  pix_x = s->display.x->pixel_width - ibw/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, s->display.x->window_desc,
+    XCreatePixmapFromBitmapData (x_current_display, f->display.x->window_desc,
 				 up_arrow_bits, 16, 16,
-				 s->display.x->foreground_pixel,
-				 s->display.x->background_pixel,
+				 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, s->display.x->window_desc,
+    XCreatePixmapFromBitmapData (x_current_display, f->display.x->window_desc,
 				 down_arrow_bits, 16, 16,
-				 s->display.x->foreground_pixel,
-				 s->display.x->background_pixel,
+				 f->display.x->foreground_pixel,
+				 f->display.x->background_pixel,
 				 DefaultDepth (x_current_display,
 					       XDefaultScreen (x_current_display)));
 
   slider_pixmap =
-    XCreatePixmapFromBitmapData (x_current_display, s->display.x->window_desc,
+    XCreatePixmapFromBitmapData (x_current_display, f->display.x->window_desc,
 				 gray_bits, 16, 16,
-				 s->display.x->foreground_pixel,
-				 s->display.x->background_pixel,
+				 f->display.x->foreground_pixel,
+				 f->display.x->background_pixel,
 				 DefaultDepth (x_current_display,
 					       XDefaultScreen (x_current_display)));
 
@@ -2405,54 +2405,54 @@
   down_arrow_cursor = XCreateFontCursor (x_current_display, XC_sb_down_arrow);
   v_double_arrow_cursor = XCreateFontCursor (x_current_display, XC_sb_v_double_arrow);
 
-  s->display.x->v_scrollbar =
-    XCreateSimpleWindow (x_current_display, s->display.x->window_desc,
+  f->display.x->v_scrollbar =
+    XCreateSimpleWindow (x_current_display, f->display.x->window_desc,
 			 pix_x, pix_y, width, height, border,
-			 s->display.x->foreground_pixel,
-			 s->display.x->background_pixel);
+			 f->display.x->foreground_pixel,
+			 f->display.x->background_pixel);
   XFlush (x_current_display);
-  XDefineCursor (x_current_display, s->display.x->v_scrollbar,
+  XDefineCursor (x_current_display, f->display.x->v_scrollbar,
 		 v_double_arrow_cursor);
   
   /* Create slider window */
-  s->display.x->v_slider =
-    XCreateSimpleWindow (x_current_display, s->display.x->v_scrollbar,
+  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, s->display.x->border_pixel,
-			 s->display.x->foreground_pixel);
+			 1, f->display.x->border_pixel,
+			 f->display.x->foreground_pixel);
   XFlush (x_current_display);
-  XDefineCursor (x_current_display, s->display.x->v_slider,
+  XDefineCursor (x_current_display, f->display.x->v_slider,
 		 v_double_arrow_cursor);
-  XSetWindowBackgroundPixmap (x_current_display, s->display.x->v_slider,
+  XSetWindowBackgroundPixmap (x_current_display, f->display.x->v_slider,
 			      slider_pixmap);
 
-  s->display.x->v_thumbup =
-    XCreateSimpleWindow (x_current_display, s->display.x->v_scrollbar,
+  f->display.x->v_thumbup =
+    XCreateSimpleWindow (x_current_display, f->display.x->v_scrollbar,
 			 0, 0,
 			 VSCROLL_WIDTH - 2, VSCROLL_WIDTH - 2,
-			 0, s->display.x->foreground_pixel,
-			 s->display.x-> background_pixel);
+			 0, f->display.x->foreground_pixel,
+			 f->display.x-> background_pixel);
   XFlush (x_current_display);
-  XDefineCursor (x_current_display, s->display.x->v_thumbup,
+  XDefineCursor (x_current_display, f->display.x->v_thumbup,
 		 up_arrow_cursor);
-  XSetWindowBackgroundPixmap (x_current_display, s->display.x->v_thumbup,
+  XSetWindowBackgroundPixmap (x_current_display, f->display.x->v_thumbup,
 			      up_arrow_pixmap);
 
-  s->display.x->v_thumbdown =
-    XCreateSimpleWindow (x_current_display, s->display.x->v_scrollbar,
+  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, s->display.x->foreground_pixel,
-			 s->display.x->background_pixel);
+			 0, f->display.x->foreground_pixel,
+			 f->display.x->background_pixel);
   XFlush (x_current_display);
-  XDefineCursor (x_current_display, s->display.x->v_thumbdown,
+  XDefineCursor (x_current_display, f->display.x->v_thumbdown,
 		 down_arrow_cursor);
-  XSetWindowBackgroundPixmap (x_current_display, s->display.x->v_thumbdown,
+  XSetWindowBackgroundPixmap (x_current_display, f->display.x->v_thumbdown,
 			      down_arrow_pixmap);
   
-  fore_color.pixel = s->display.x->mouse_pixel;
-  back_color.pixel = s->display.x->background_pixel;
+  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)),
@@ -2473,21 +2473,21 @@
   XFreePixmap (x_current_display, down_arrow_pixmap);
   XFlush (x_current_display);
 
-  XSelectInput (x_current_display, s->display.x->v_scrollbar,
+  XSelectInput (x_current_display, f->display.x->v_scrollbar,
 		ButtonPressMask | ButtonReleaseMask
 		| PointerMotionMask | PointerMotionHintMask
 		| EnterWindowMask);
-  XSelectInput (x_current_display, s->display.x->v_slider,
+  XSelectInput (x_current_display, f->display.x->v_slider,
 		ButtonPressMask | ButtonReleaseMask);
-  XSelectInput (x_current_display, s->display.x->v_thumbdown,
+  XSelectInput (x_current_display, f->display.x->v_thumbdown,
 		ButtonPressMask | ButtonReleaseMask);
-  XSelectInput (x_current_display, s->display.x->v_thumbup,
+  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, s->display.x->v_scrollbar);
-  XMapSubwindows (x_current_display, s->display.x->v_scrollbar);
+  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;
@@ -2503,66 +2503,66 @@
     0x7ffe, 0x3ffc, 0x1ff8, 0x0ff0,
     0x07e0, 0x03c0, 0x0180, 0x0000};
 
-  fore_tile = XMakeTile (s->display.x->foreground_pixel);
-  back_tile = XMakeTile (s->display.x->background_pixel);
-  bord_tile = XMakeTile (s->display.x->border_pixel);
+  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, 
-				 s->display.x->foreground_pixel,
-				 s->display.x->background_pixel);
+				 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,
-				   s->display.x->foreground_pixel,
-				   s->display.x->background_pixel);
+				   f->display.x->foreground_pixel,
+				   f->display.x->background_pixel);
   XFreeBitmap (b);
 
-  ibw = s->display.x->internal_border_width;
-
-  s->display.x->v_scrollbar = XCreateWindow (s->display.x->window_desc,
+  ibw = f->display.x->internal_border_width;
+
+  f->display.x->v_scrollbar = XCreateWindow (f->display.x->window_desc,
 					     width - VSCROLL_WIDTH - ibw/2,
 					     ibw/2,
 					     VSCROLL_WIDTH - 2,
 					     height - ibw - 2,
 					     1, bord_tile, back_tile);
 
-  s->display.x->v_scrollbar_width = VSCROLL_WIDTH;
-
-  s->display.x->v_thumbup = XCreateWindow (s->display.x->v_scrollbar,
+  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 (s->display.x->v_thumbup);
-
-  s->display.x->v_thumbdown = XCreateWindow (s->display.x->v_scrollbar,
+  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 (s->display.x->v_thumbdown);
-
-  s->display.x->v_slider = XCreateWindow (s->display.x->v_scrollbar,
+  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 (s->display.x->v_scrollbar,
+  XSelectInput (f->display.x->v_scrollbar,
 		(ButtonPressed | ButtonReleased | KeyPressed));
-  XSelectInput (s->display.x->v_thumbup,
+  XSelectInput (f->display.x->v_thumbup,
 		(ButtonPressed | ButtonReleased | KeyPressed));
 
-  XSelectInput (s->display.x->v_thumbdown,
+  XSelectInput (f->display.x->v_thumbdown,
 		(ButtonPressed | ButtonReleased | KeyPressed));
 
-  XMapWindow (s->display.x->v_thumbup);
-  XMapWindow (s->display.x->v_thumbdown);
-  XMapWindow (s->display.x->v_slider);
-  XMapWindow (s->display.x->v_scrollbar);
+  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);
@@ -2572,43 +2572,43 @@
 }				       
 
 static void
-install_horizontal_scrollbar (s)
-     struct screen *s;
+install_horizontal_scrollbar (f)
+     struct frame *f;
 {
-  int ibw = s->display.x->internal_border_width;
+  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 (s) - HSCROLL_HEIGHT - ibw ;
-  width = PIXEL_WIDTH (s) - 2 * ibw;
-  if (s->display.x->v_scrollbar_width)
-    width -= (s->display.x->v_scrollbar_width + 1);
+  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, s->display.x->window_desc,
+    XCreatePixmapFromBitmapData (x_current_display, f->display.x->window_desc,
 				 left_arrow_bits, 16, 16,
-				 s->display.x->foreground_pixel,
-				 s->display.x->background_pixel,
+				 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, s->display.x->window_desc,
+    XCreatePixmapFromBitmapData (x_current_display, f->display.x->window_desc,
 				 right_arrow_bits, 16, 16,
-				 s->display.x->foreground_pixel,
-				 s->display.x->background_pixel,
+				 f->display.x->foreground_pixel,
+				 f->display.x->background_pixel,
 				 DefaultDepth (x_current_display,
 					       XDefaultScreen (x_current_display)));
 
   slider_pixmap =
-    XCreatePixmapFromBitmapData (x_current_display, s->display.x->window_desc,
+    XCreatePixmapFromBitmapData (x_current_display, f->display.x->window_desc,
 				 gray_bits, 16, 16,
-				 s->display.x->foreground_pixel,
-				 s->display.x->background_pixel,
+				 f->display.x->foreground_pixel,
+				 f->display.x->background_pixel,
 				 DefaultDepth (x_current_display,
 					       XDefaultScreen (x_current_display)));
 
@@ -2616,65 +2616,65 @@
   right_arrow_cursor = XCreateFontCursor (x_current_display, XC_sb_right_arrow);
   h_double_arrow_cursor = XCreateFontCursor (x_current_display, XC_sb_h_double_arrow);
 
-  s->display.x->h_scrollbar =
-    XCreateSimpleWindow (x_current_display, s->display.x->window_desc,
+  f->display.x->h_scrollbar =
+    XCreateSimpleWindow (x_current_display, f->display.x->window_desc,
 			 pix_x, pix_y,
 			 width - ibw - 2, HSCROLL_HEIGHT - 2, 1,
-			 s->display.x->foreground_pixel,
-			 s->display.x->background_pixel);
-  XDefineCursor (x_current_display, s->display.x->h_scrollbar,
+			 f->display.x->foreground_pixel,
+			 f->display.x->background_pixel);
+  XDefineCursor (x_current_display, f->display.x->h_scrollbar,
 		 h_double_arrow_cursor);
 
-  s->display.x->h_slider =
-    XCreateSimpleWindow (x_current_display, s->display.x->h_scrollbar,
+  f->display.x->h_slider =
+    XCreateSimpleWindow (x_current_display, f->display.x->h_scrollbar,
 			 0, 0,
 			 HSCROLL_HEIGHT - 4, HSCROLL_HEIGHT - 4,
-			 1, s->display.x->foreground_pixel,
-			 s->display.x->background_pixel);
-  XDefineCursor (x_current_display, s->display.x->h_slider,
+			 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, s->display.x->h_slider,
+  XSetWindowBackgroundPixmap (x_current_display, f->display.x->h_slider,
 			      slider_pixmap);
 
-  s->display.x->h_thumbleft =
-    XCreateSimpleWindow (x_current_display, s->display.x->h_scrollbar,
+  f->display.x->h_thumbleft =
+    XCreateSimpleWindow (x_current_display, f->display.x->h_scrollbar,
 			 0, 0,
 			 HSCROLL_HEIGHT - 2, HSCROLL_HEIGHT - 2,
-			 0, s->display.x->foreground_pixel,
-			 s->display.x->background_pixel);
-  XDefineCursor (x_current_display, s->display.x->h_thumbleft,
+			 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, s->display.x->h_thumbleft,
+  XSetWindowBackgroundPixmap (x_current_display, f->display.x->h_thumbleft,
 			      left_arrow_pixmap);
 
-  s->display.x->h_thumbright =
-    XCreateSimpleWindow (x_current_display, s->display.x->h_scrollbar,
+  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, s->display.x->foreground_pixel,
-			 s->display.x->background_pixel);
-  XDefineCursor (x_current_display, s->display.x->h_thumbright,
+			 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, s->display.x->h_thumbright,
+  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, s->display.x->h_scrollbar,
+  XSelectInput (x_current_display, f->display.x->h_scrollbar,
 		ButtonPressMask | ButtonReleaseMask
 		| PointerMotionMask | PointerMotionHintMask
 		| EnterWindowMask);
-  XSelectInput (x_current_display, s->display.x->h_slider,
+  XSelectInput (x_current_display, f->display.x->h_slider,
 		ButtonPressMask | ButtonReleaseMask);
-  XSelectInput (x_current_display, s->display.x->h_thumbright,
+  XSelectInput (x_current_display, f->display.x->h_thumbright,
 		ButtonPressMask | ButtonReleaseMask);
-  XSelectInput (x_current_display, s->display.x->h_thumbleft,
+  XSelectInput (x_current_display, f->display.x->h_thumbleft,
 		ButtonPressMask | ButtonReleaseMask);
 
-  XMapWindow (x_current_display, s->display.x->h_scrollbar);
-  XMapSubwindows (x_current_display, s->display.x->h_scrollbar);
+  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;
@@ -2688,18 +2688,18 @@
 /* Adjust the displayed position in the scroll bar for window W.  */
 
 void
-adjust_scrollbars (s)
-     struct screen *s;
+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 (SCREEN_SELECTED_WINDOW (s));
-
-  if (! SCREEN_IS_X (s))
+  struct window *w = XWINDOW (FRAME_SELECTED_WINDOW (f));
+
+  if (! FRAME_IS_X (f))
     return;
 
-  if (s->display.x->v_scrollbar != 0)
+  if (f->display.x->v_scrollbar != 0)
     {
       int h, height;
       struct buffer *b = XBUFFER (w->buffer);
@@ -2712,9 +2712,9 @@
 
       /* Calculate height of scrollbar area */
 
-      height = s->height * FONT_HEIGHT (s->display.x->font)
-	+ s->display.x->internal_border_width
-	  - 2 * (s->display.x->v_scrollbar_width);
+      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 */
 
@@ -2737,27 +2737,27 @@
 
       /* Add thumbup offset to starting position of slider */
 
-      pos += (s->display.x->v_scrollbar_width - 2);
+      pos += (f->display.x->v_scrollbar_width - 2);
 
       XMoveResizeWindow (XDISPLAY
-			 s->display.x->v_slider,
+			 f->display.x->v_slider,
 			 0, pos,
-			 s->display.x->v_scrollbar_width - 4, h);
+			 f->display.x->v_scrollbar_width - 4, h);
     }
       
-  if (s->display.x->h_scrollbar != 0)
+  if (f->display.x->h_scrollbar != 0)
     {
       int l, length;      /* Length of the scrollbar area */
 
-      length = s->width * FONT_WIDTH (s->display.x->font)
-	+ s->display.x->internal_border_width
-	  - 2 * (s->display.x->h_scrollbar_height);
+      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 + s->width);
+	pos = (w->hscroll * length) / (w->hscroll + f->width);
       pos = max (0, pos);
       pos = min (pos, length - 2);
 
@@ -2765,81 +2765,81 @@
       l = length - pos;
 
       /* Add thumbup offset */
-      pos += (s->display.x->h_scrollbar_height - 2);
+      pos += (f->display.x->h_scrollbar_height - 2);
 
       XMoveResizeWindow (XDISPLAY
-			 s->display.x->h_slider,
+			 f->display.x->h_slider,
 			 pos, 0,
-			 l, s->display.x->h_scrollbar_height - 4);
+			 l, f->display.x->h_scrollbar_height - 4);
     }
 }
 
-/* Adjust the size of the scroll bars of screen S,
-   when the screen size has changed.  */
+/* Adjust the size of the scroll bars of frame F,
+   when the frame size has changed.  */
 
 void
-x_resize_scrollbars (s)
-     struct screen *s;
+x_resize_scrollbars (f)
+     struct frame *f;
 {
-  int ibw = s->display.x->internal_border_width;
+  int ibw = f->display.x->internal_border_width;
   int pixelwidth, pixelheight;
 
-  if (s == 0
-      || s->display.x == 0
-      || (s->display.x->v_scrollbar == 0
-	  && s->display.x->h_scrollbar == 0))
+  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 screen.  */
-  pixelwidth = (s->width * FONT_WIDTH (s->display.x->font)
-		+ 2 * ibw + s->display.x->v_scrollbar_width);
-  pixelheight = (s->height * FONT_HEIGHT (s->display.x->font)
-		 + 2 * ibw + s->display.x->h_scrollbar_height);
-
-  if (s->display.x->v_scrollbar_width && s->display.x->v_scrollbar)
+  /* 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
-			 s->display.x->v_scrollbar,
-			 pixelwidth - s->display.x->v_scrollbar_width - ibw/2,
+			 f->display.x->v_scrollbar,
+			 pixelwidth - f->display.x->v_scrollbar_width - ibw/2,
 			 ibw/2,
-			 s->display.x->v_scrollbar_width - 2,
+			 f->display.x->v_scrollbar_width - 2,
 			 pixelheight - ibw - 2);
       XMoveWindow (XDISPLAY
-		   s->display.x->v_thumbdown, 0,
-		   pixelheight - ibw - s->display.x->v_scrollbar_width);
+		   f->display.x->v_thumbdown, 0,
+		   pixelheight - ibw - f->display.x->v_scrollbar_width);
       UNBLOCK_INPUT;
     }
 
-  if (s->display.x->h_scrollbar_height && s->display.x->h_scrollbar)
+  if (f->display.x->h_scrollbar_height && f->display.x->h_scrollbar)
     {
-      if (s->display.x->v_scrollbar_width)
-	pixelwidth -= s->display.x->v_scrollbar_width + 1;
+      if (f->display.x->v_scrollbar_width)
+	pixelwidth -= f->display.x->v_scrollbar_width + 1;
 
       BLOCK_INPUT;
       XMoveResizeWindow (XDISPLAY
-			 s->display.x->h_scrollbar,
+			 f->display.x->h_scrollbar,
 			 ibw / 2,
-			 pixelheight - s->display.x->h_scrollbar_height - ibw / 2,
+			 pixelheight - f->display.x->h_scrollbar_height - ibw / 2,
 			 pixelwidth - ibw - 2,
-			 s->display.x->h_scrollbar_height - 2);
+			 f->display.x->h_scrollbar_height - 2);
       XMoveWindow (XDISPLAY
-		   s->display.x->h_thumbright,
-		   pixelwidth - ibw - s->display.x->h_scrollbar_height, 0);
+		   f->display.x->h_thumbright,
+		   pixelwidth - ibw - f->display.x->h_scrollbar_height, 0);
       UNBLOCK_INPUT;
     }
 }
 
-x_pixel_width (s)
-     register struct screen *s;
+x_pixel_width (f)
+     register struct frame *f;
 {
-  return PIXEL_WIDTH (s);
+  return PIXEL_WIDTH (f);
 }
 
-x_pixel_height (s)
-     register struct screen *s;
+x_pixel_height (f)
+     register struct frame *f;
 {
-  return PIXEL_HEIGHT (s);
+  return PIXEL_HEIGHT (f);
 }
 
 DEFUN ("x-defined-color", Fx_defined_color, Sx_defined_color, 1, 1, 0,
@@ -2878,64 +2878,64 @@
 }
 
 DEFUN ("x-pixel-width", Fx_pixel_width, Sx_pixel_width, 1, 1, 0,
-  "Return the width in pixels of screen S.")
-  (screen)
-     Lisp_Object screen;
+  "Return the width in pixels of FRAME.")
+  (frame)
+     Lisp_Object frame;
 {
-  CHECK_LIVE_SCREEN (screen, 0);
-  return make_number (XSCREEN (screen)->display.x->pixel_width);
+  CHECK_LIVE_FRAME (frame, 0);
+  return make_number (XFRAME (frame)->display.x->pixel_width);
 }
 
 DEFUN ("x-pixel-height", Fx_pixel_height, Sx_pixel_height, 1, 1, 0,
-  "Return the height in pixels of screen S.")
-  (screen)
-     Lisp_Object screen;
+  "Return the height in pixels of FRAME.")
+  (frame)
+     Lisp_Object frame;
 {
-  CHECK_LIVE_SCREEN (screen, 0);
-  return make_number (XSCREEN (screen)->display.x->pixel_height);
+  CHECK_LIVE_FRAME (frame, 0);
+  return make_number (XFRAME (frame)->display.x->pixel_height);
 }
 
 #if 0  /* These no longer seem like the right way to do things.  */
 
-/* Draw a rectangle on the screen with left top corner including
+/* Draw a rectangle on the frame with left top corner including
    the character specified by LEFT_CHAR and TOP_CHAR.  The rectangle is
    CHARS by LINES wide and long and is the color of the cursor. */
 
 void
-x_rectangle (s, gc, left_char, top_char, chars, lines)
-     register struct screen *s;
+x_rectangle (f, gc, left_char, top_char, chars, lines)
+     register struct frame *f;
      GC gc;
      register int top_char, left_char, chars, lines;
 {
   int width;
   int height;
-  int left = (left_char * FONT_WIDTH (s->display.x->font)
-		    + s->display.x->internal_border_width);
-  int top = (top_char *  FONT_HEIGHT (s->display.x->font)
-		   + s->display.x->internal_border_width);
+  int left = (left_char * FONT_WIDTH (f->display.x->font)
+		    + f->display.x->internal_border_width);
+  int top = (top_char *  FONT_HEIGHT (f->display.x->font)
+		   + f->display.x->internal_border_width);
 
   if (chars < 0)
-    width = FONT_WIDTH (s->display.x->font) / 2;
+    width = FONT_WIDTH (f->display.x->font) / 2;
   else
-    width = FONT_WIDTH (s->display.x->font) * chars;
+    width = FONT_WIDTH (f->display.x->font) * chars;
   if (lines < 0)
-    height = FONT_HEIGHT (s->display.x->font) / 2;
+    height = FONT_HEIGHT (f->display.x->font) / 2;
   else
-    height = FONT_HEIGHT (s->display.x->font) * lines;
-
-  XDrawRectangle (x_current_display, s->display.x->window_desc,
+    height = FONT_HEIGHT (f->display.x->font) * lines;
+
+  XDrawRectangle (x_current_display, f->display.x->window_desc,
 		  gc, left, top, width, height);
 }
 
 DEFUN ("x-draw-rectangle", Fx_draw_rectangle, Sx_draw_rectangle, 5, 5, 0,
-  "Draw a rectangle on SCREEN between coordinates specified by\n\
+  "Draw a rectangle on FRAME between coordinates specified by\n\
 numbers X0, Y0, X1, Y1 in the cursor pixel.")
-  (screen, X0, Y0, X1, Y1)
-     register Lisp_Object screen, X0, X1, Y0, Y1;
+  (frame, X0, Y0, X1, Y1)
+     register Lisp_Object frame, X0, X1, Y0, Y1;
 {
   register int x0, y0, x1, y1, top, left, n_chars, n_lines;
 
-  CHECK_LIVE_SCREEN (screen, 0);
+  CHECK_LIVE_FRAME (frame, 0);
   CHECK_NUMBER (X0, 0);
   CHECK_NUMBER (Y0, 1);
   CHECK_NUMBER (X1, 2);
@@ -2969,7 +2969,7 @@
     }
 
   BLOCK_INPUT;
-  x_rectangle (XSCREEN (screen), XSCREEN (screen)->display.x->cursor_gc,
+  x_rectangle (XFRAME (frame), XFRAME (frame)->display.x->cursor_gc,
 	       left, top, n_chars, n_lines);
   UNBLOCK_INPUT;
 
@@ -2977,14 +2977,14 @@
 }
 
 DEFUN ("x-erase-rectangle", Fx_erase_rectangle, Sx_erase_rectangle, 5, 5, 0,
-  "Draw a rectangle drawn on SCREEN between coordinates\n\
+  "Draw a rectangle drawn on FRAME between coordinates\n\
 X0, Y0, X1, Y1 in the regular background-pixel.")
-  (screen, X0, Y0, X1, Y1)
-  register Lisp_Object screen, X0, Y0, X1, Y1;
+  (frame, X0, Y0, X1, Y1)
+  register Lisp_Object frame, X0, Y0, X1, Y1;
 {
   register int x0, y0, x1, y1, top, left, n_chars, n_lines;
 
-  CHECK_SCREEN (screen, 0);
+  CHECK_FRAME (frame, 0);
   CHECK_NUMBER (X0, 0);
   CHECK_NUMBER (Y0, 1);
   CHECK_NUMBER (X1, 2);
@@ -3018,7 +3018,7 @@
     }
 
   BLOCK_INPUT;
-  x_rectangle (XSCREEN (screen), XSCREEN (screen)->display.x->reverse_gc,
+  x_rectangle (XFRAME (frame), XFRAME (frame)->display.x->reverse_gc,
 	       left, top, n_chars, n_lines);
   UNBLOCK_INPUT;
 
@@ -3029,17 +3029,17 @@
    TOP_X, TOP_Y and ending at BOTTOM_X and BOTTOM_Y.  GC specifies the
    pixel and line characteristics. */
 
-#define line_len(line) (SCREEN_CURRENT_GLYPHS (s)->used[(line)])
+#define line_len(line) (FRAME_CURRENT_GLYPHS (f)->used[(line)])
 
 static void
-outline_region (s, gc, top_x, top_y, bottom_x, bottom_y)
-     register struct screen *s;
+outline_region (f, gc, top_x, top_y, bottom_x, bottom_y)
+     register struct frame *f;
      GC gc;
      int  top_x, top_y, bottom_x, bottom_y;
 {
-  register int ibw = s->display.x->internal_border_width;
-  register int font_w = FONT_WIDTH (s->display.x->font);
-  register int font_h = FONT_HEIGHT (s->display.x->font);
+  register int ibw = f->display.x->internal_border_width;
+  register int font_w = FONT_WIDTH (f->display.x->font);
+  register int font_h = FONT_HEIGHT (f->display.x->font);
   int y = top_y;
   int x = line_len (y);
   XPoint *pixel_points = (XPoint *)
@@ -3104,19 +3104,19 @@
   this_point->x = pixel_points->x;
   this_point->y = pixel_points->y;
 
-  XDrawLines (x_current_display, s->display.x->window_desc,
+  XDrawLines (x_current_display, f->display.x->window_desc,
 	      gc, pixel_points,
 	      (this_point - pixel_points + 1), CoordModeOrigin);
 }
 
 DEFUN ("x-contour-region", Fx_contour_region, Sx_contour_region, 1, 1, 0,
   "Highlight the region between point and the character under the mouse\n\
-selected screen.")
+selected frame.")
   (event)
      register Lisp_Object event;
 {
   register int x0, y0, x1, y1;
-  register struct screen *s = selected_screen;
+  register struct frame *f = selected_frame;
   register int p1, p2;
 
   CHECK_CONS (event, 0);
@@ -3128,22 +3128,22 @@
   /* If the mouse is past the end of the line, don't that area. */
   /* ReWrite this... */
 
-  x1 = s->cursor_x;
-  y1 = s->cursor_y;
+  x1 = f->cursor_x;
+  y1 = f->cursor_y;
 
   if (y1 > y0)			/* point below mouse */
-    outline_region (s, s->display.x->cursor_gc,
+    outline_region (f, f->display.x->cursor_gc,
 		    x0, y0, x1, y1);
   else if (y1 < y0)		/* point above mouse */
-    outline_region (s, s->display.x->cursor_gc,
+    outline_region (f, f->display.x->cursor_gc,
 		    x1, y1, x0, y0);
   else				/* same line: draw horizontal rectangle */
     {
       if (x1 > x0)
-	x_rectangle (s, s->display.x->cursor_gc,
+	x_rectangle (f, f->display.x->cursor_gc,
 		     x0, y0, (x1 - x0 + 1), 1);
       else if (x1 < x0)
-	  x_rectangle (s, s->display.x->cursor_gc,
+	  x_rectangle (f, f->display.x->cursor_gc,
 		       x1, y1, (x0 - x1 + 1), 1);
     }
 
@@ -3155,32 +3155,32 @@
 
 DEFUN ("x-uncontour-region", Fx_uncontour_region, Sx_uncontour_region, 1, 1, 0,
   "Erase any highlighting of the region between point and the character\n\
-at X, Y on the selected screen.")
+at X, Y on the selected frame.")
   (event)
      register Lisp_Object event;
 {
   register int x0, y0, x1, y1;
-  register struct screen *s = selected_screen;
+  register struct frame *f = selected_frame;
 
   BLOCK_INPUT;
   x0 = XINT (Fcar (Fcar (event)));
   y0 = XINT (Fcar (Fcdr (Fcar (event))));
-  x1 = s->cursor_x;
-  y1 = s->cursor_y;
+  x1 = f->cursor_x;
+  y1 = f->cursor_y;
 
   if (y1 > y0)			/* point below mouse */
-    outline_region (s, s->display.x->reverse_gc,
+    outline_region (f, f->display.x->reverse_gc,
 		      x0, y0, x1, y1);
   else if (y1 < y0)		/* point above mouse */
-    outline_region (s, s->display.x->reverse_gc,
+    outline_region (f, f->display.x->reverse_gc,
 		      x1, y1, x0, y0);
   else				/* same line: draw horizontal rectangle */
     {
       if (x1 > x0)
-	x_rectangle (s, s->display.x->reverse_gc,
+	x_rectangle (f, f->display.x->reverse_gc,
 		     x0, y0, (x1 - x0 + 1), 1);
       else if (x1 < x0)
-	x_rectangle (s, s->display.x->reverse_gc,
+	x_rectangle (f, f->display.x->reverse_gc,
 		     x1, y1, (x0 - x1 + 1), 1);
     }
   UNBLOCK_INPUT;
@@ -3203,7 +3203,7 @@
   register XPoint *begin = contour_lines[y_pos].top_left;
   register XPoint *end;
   register int npoints;
-  register struct display_line *line = selected_screen->phys_lines[y_pos + 1];
+  register struct display_line *line = selected_frame->phys_lines[y_pos + 1];
 
   if (x_pos >= line->len - 1)	/* Draw one, straight horizontal line. */
     {
@@ -3268,9 +3268,9 @@
   (event)
      Lisp_Object event;
 {
- register struct screen *s = selected_screen;
- register int point_x = s->cursor_x;
- register int point_y = s->cursor_y;
+ register struct frame *f = selected_frame;
+ register int point_x = f->cursor_x;
+ register int point_y = f->cursor_y;
  register int mouse_below_point;
  register Lisp_Object obj;
  register int x_contour_x, x_contour_y;
@@ -3281,13 +3281,13 @@
 			       && x_contour_x > point_x))
    {
      mouse_below_point = 1;
-     outline_region (s, s->display.x->cursor_gc, point_x, point_y,
+     outline_region (f, f->display.x->cursor_gc, point_x, point_y,
 		     x_contour_x, x_contour_y);
    }
  else
    {
      mouse_below_point = 0;
-     outline_region (s, s->display.x->cursor_gc, x_contour_x, x_contour_y,
+     outline_region (f, f->display.x->cursor_gc, x_contour_x, x_contour_y,
 		     point_x, point_y);
    }
 
@@ -3303,9 +3303,9 @@
 	   {
 	     mouse_below_point = 0;
 
-	     outline_region (s, s->display.x->reverse_gc, point_x, point_y,
+	     outline_region (f, f->display.x->reverse_gc, point_x, point_y,
 			     x_contour_x, x_contour_y);
-	     outline_region (s, s->display.x->cursor_gc, x_mouse_x, x_mouse_y,
+	     outline_region (f, f->display.x->cursor_gc, x_mouse_x, x_mouse_y,
 			     point_x, point_y);
 	   }
 	 else if (x_mouse_y < x_contour_y)	  /* Bottom clipped. */
@@ -3326,9 +3326,9 @@
 	   {
 	     mouse_below_point = 1;
 
-	     outline_region (s, s->display.x->reverse_gc,
+	     outline_region (f, f->display.x->reverse_gc,
 			     x_contour_x, x_contour_y, point_x, point_y);
-	     outline_region (s, s->display.x->cursor_gc, point_x, point_y,
+	     outline_region (f, f->display.x->cursor_gc, point_x, point_y,
 			     x_mouse_x, x_mouse_y);
 	   }
 	 else if (x_mouse_y > x_contour_y)	  /* Top clipped. */
@@ -3366,42 +3366,42 @@
      Lisp_Object event;
 {
   register Lisp_Object obj;
-  struct screen *s = selected_screen;
+  struct frame *f = selected_frame;
   register struct window *w = XWINDOW (selected_window);
-  register GC line_gc = s->display.x->cursor_gc;
-  register GC erase_gc = s->display.x->reverse_gc;
+  register GC line_gc = f->display.x->cursor_gc;
+  register GC erase_gc = f->display.x->reverse_gc;
 #if 0
   char dash_list[] = {6, 4, 6, 4};
   int dashes = 4;
   XGCValues gc_values;
 #endif
   register int previous_y;
-  register int line = (x_mouse_y + 1) * FONT_HEIGHT (s->display.x->font)
-    + s->display.x->internal_border_width;
-  register int left = s->display.x->internal_border_width
+  register int line = (x_mouse_y + 1) * FONT_HEIGHT (f->display.x->font)
+    + f->display.x->internal_border_width;
+  register int left = f->display.x->internal_border_width
     + (w->left
-       * FONT_WIDTH (s->display.x->font));
+       * FONT_WIDTH (f->display.x->font));
   register int right = left + (w->width
-			       * FONT_WIDTH (s->display.x->font))
-    - s->display.x->internal_border_width;
+			       * FONT_WIDTH (f->display.x->font))
+    - f->display.x->internal_border_width;
 
 #if 0
   BLOCK_INPUT;
-  gc_values.foreground = s->display.x->cursor_pixel;
-  gc_values.background = s->display.x->background_pixel;
+  gc_values.foreground = f->display.x->cursor_pixel;
+  gc_values.background = f->display.x->background_pixel;
   gc_values.line_width = 1;
   gc_values.line_style = LineOnOffDash;
   gc_values.cap_style = CapRound;
   gc_values.join_style = JoinRound;
 
-  line_gc = XCreateGC (x_current_display, s->display.x->window_desc,
+  line_gc = XCreateGC (x_current_display, f->display.x->window_desc,
 		       GCLineStyle | GCJoinStyle | GCCapStyle
 		       | GCLineWidth | GCForeground | GCBackground,
 		       &gc_values);
   XSetDashes (x_current_display, line_gc, 0, dash_list, dashes);
-  gc_values.foreground = s->display.x->background_pixel;
-  gc_values.background = s->display.x->foreground_pixel;
-  erase_gc = XCreateGC (x_current_display, s->display.x->window_desc,
+  gc_values.foreground = f->display.x->background_pixel;
+  gc_values.background = f->display.x->foreground_pixel;
+  erase_gc = XCreateGC (x_current_display, f->display.x->window_desc,
 		       GCLineStyle | GCJoinStyle | GCCapStyle
 		       | GCLineWidth | GCForeground | GCBackground,
 		       &gc_values);
@@ -3415,9 +3415,9 @@
 	  && x_mouse_y < XINT (w->top) + XINT (w->height) - 1)
 	{
 	  previous_y = x_mouse_y;
-	  line = (x_mouse_y + 1) * FONT_HEIGHT (s->display.x->font)
-	    + s->display.x->internal_border_width;
-	  XDrawLine (x_current_display, s->display.x->window_desc,
+	  line = (x_mouse_y + 1) * FONT_HEIGHT (f->display.x->font)
+	    + f->display.x->internal_border_width;
+	  XDrawLine (x_current_display, f->display.x->window_desc,
 		     line_gc, left, line, right, line);
 	}
       XFlushQueue ();
@@ -3432,7 +3432,7 @@
 	      || x_mouse_grabbed)
 	    {
 	      BLOCK_INPUT;
-	      XDrawLine (x_current_display, s->display.x->window_desc,
+	      XDrawLine (x_current_display, f->display.x->window_desc,
 			 erase_gc, left, line, right, line);
 	      UNBLOCK_INPUT;
 	      unread_command_char = obj;
@@ -3446,7 +3446,7 @@
       while (x_mouse_y == previous_y);
 
       BLOCK_INPUT;
-      XDrawLine (x_current_display, s->display.x->window_desc,
+      XDrawLine (x_current_display, f->display.x->window_desc,
 		 erase_gc, left, line, right, line);
       UNBLOCK_INPUT;
     }
@@ -3465,29 +3465,29 @@
   ()
 {
   static Cursor current_pointer_shape;
-  SCREEN_PTR s = x_mouse_screen;
+  FRAME_PTR f = x_mouse_frame;
 
   BLOCK_INPUT;
-  if (EQ (Vmouse_screen_part, Qtext_part)
-      && (current_pointer_shape != s->display.x->nontext_cursor))
+  if (EQ (Vmouse_frame_part, Qtext_part)
+      && (current_pointer_shape != f->display.x->nontext_cursor))
     {
       unsigned char c;
       struct buffer *buf;
 
-      current_pointer_shape = s->display.x->nontext_cursor;
+      current_pointer_shape = f->display.x->nontext_cursor;
       XDefineCursor (x_current_display,
-		     s->display.x->window_desc,
+		     f->display.x->window_desc,
 		     current_pointer_shape);
 
       buf = XBUFFER (XWINDOW (Vmouse_window)->buffer);
       c = *(BUF_CHAR_ADDRESS (buf, mouse_buffer_offset));
     }
-  else if (EQ (Vmouse_screen_part, Qmodeline_part)
-	   && (current_pointer_shape != s->display.x->modeline_cursor))
+  else if (EQ (Vmouse_frame_part, Qmodeline_part)
+	   && (current_pointer_shape != f->display.x->modeline_cursor))
     {
-      current_pointer_shape = s->display.x->modeline_cursor;
+      current_pointer_shape = f->display.x->modeline_cursor;
       XDefineCursor (x_current_display,
-		     s->display.x->window_desc,
+		     f->display.x->window_desc,
 		     current_pointer_shape);
     }
 
@@ -3503,7 +3503,7 @@
      Lisp_Object event;
 {
   struct window *w = XWINDOW (Vmouse_window);
-  struct screen *s = XSCREEN (WINDOW_SCREEN (w));
+  struct frame *f = XFRAME (WINDOW_FRAME (w));
   struct buffer *b = XBUFFER (w->buffer);
   Lisp_Object obj;
 
@@ -3514,7 +3514,7 @@
     {
       int x, y;
 
-      x_read_mouse_position (selected_screen, &x, &y);
+      x_read_mouse_position (selected_frame, &x, &y);
     }
 
   BLOCK_INPUT;
@@ -3529,29 +3529,29 @@
 	  || x_mouse_y != mouse_track_top)
 	{
 	  int hp = 0;		/* Horizontal position */
-	  int len = SCREEN_CURRENT_GLYPHS (s)->used[x_mouse_y];
-	  int p = SCREEN_CURRENT_GLYPHS (s)->bufp[x_mouse_y];
+	  int len = FRAME_CURRENT_GLYPHS (f)->used[x_mouse_y];
+	  int p = FRAME_CURRENT_GLYPHS (f)->bufp[x_mouse_y];
 	  int tab_width = XINT (b->tab_width);
 	  int ctl_arrow_p = !NILP (b->ctl_arrow);
 	  unsigned char c;
 	  int mode_line_vpos = XFASTINT (w->height) + XFASTINT (w->top) - 1;
 	  int in_mode_line = 0;
 
-	  if (! SCREEN_CURRENT_GLYPHS (s)->enable[x_mouse_y])
+	  if (! FRAME_CURRENT_GLYPHS (f)->enable[x_mouse_y])
 	    break;
 
 	  /* Erase previous rectangle. */
 	  if (mouse_track_width)
 	    {
-	      x_rectangle (s, s->display.x->reverse_gc,
+	      x_rectangle (f, f->display.x->reverse_gc,
 			   mouse_track_left, mouse_track_top,
 			   mouse_track_width, 1);
 
-	      if ((mouse_track_left == s->phys_cursor_x
-		   || mouse_track_left == s->phys_cursor_x - 1)
-		  && mouse_track_top == s->phys_cursor_y)
+	      if ((mouse_track_left == f->phys_cursor_x
+		   || mouse_track_left == f->phys_cursor_x - 1)
+		  && mouse_track_top == f->phys_cursor_y)
 		{
-		  x_display_cursor (s, 1);
+		  x_display_cursor (f, 1);
 		}
 	    }
 
@@ -3572,7 +3572,7 @@
 	  do
 	    {
 	      c = FETCH_CHAR (p);
-	      if (len == s->width && hp == len - 1 && c != '\n')
+	      if (len == f->width && hp == len - 1 && c != '\n')
 		goto draw_or_not;
 
 	      switch (c)
@@ -3622,20 +3622,20 @@
 	  if (mouse_track_width) /* Over text; use text pointer shape. */
 	    {
 	      XDefineCursor (x_current_display,
-			     s->display.x->window_desc,
-			     s->display.x->text_cursor);
-	      x_rectangle (s, s->display.x->cursor_gc,
+			     f->display.x->window_desc,
+			     f->display.x->text_cursor);
+	      x_rectangle (f, f->display.x->cursor_gc,
 			   mouse_track_left, mouse_track_top,
 			   mouse_track_width, 1);
 	    }
 	  else if (in_mode_line)
 	    XDefineCursor (x_current_display,
-			   s->display.x->window_desc,
-			   s->display.x->modeline_cursor);
+			   f->display.x->window_desc,
+			   f->display.x->modeline_cursor);
 	  else
 	    XDefineCursor (x_current_display,
-			   s->display.x->window_desc,
-			   s->display.x->nontext_cursor);
+			   f->display.x->window_desc,
+			   f->display.x->nontext_cursor);
 	}
 
       XFlush (x_current_display);
@@ -3648,26 +3648,26 @@
 	 && EQ (Fcar (Fcdr (Fcdr (obj))), Qnil)	   /* Not scrollbar */
 	 && EQ (Vmouse_depressed, Qnil)              /* Only motion events */
 	 && EQ (Vmouse_window, selected_window)	   /* In this window */
-	 && x_mouse_screen);
+	 && x_mouse_frame);
 
   unread_command_char = obj;
 
   if (mouse_track_width)
     {
-      x_rectangle (s, s->display.x->reverse_gc,
+      x_rectangle (f, f->display.x->reverse_gc,
 		   mouse_track_left, mouse_track_top,
 		   mouse_track_width, 1);
       mouse_track_width = 0;
-      if ((mouse_track_left == s->phys_cursor_x
-	   || mouse_track_left - 1 == s->phys_cursor_x)
-	  && mouse_track_top == s->phys_cursor_y)
+      if ((mouse_track_left == f->phys_cursor_x
+	   || mouse_track_left - 1 == f->phys_cursor_x)
+	  && mouse_track_top == f->phys_cursor_y)
 	{
-	  x_display_cursor (s, 1);
+	  x_display_cursor (f, 1);
 	}
     }
   XDefineCursor (x_current_display,
-		 s->display.x->window_desc,
-		 s->display.x->nontext_cursor);
+		 f->display.x->window_desc,
+		 f->display.x->nontext_cursor);
   XFlush (x_current_display);
   UNBLOCK_INPUT;
 
@@ -3679,20 +3679,20 @@
 #include "glyphs.h"
 
 /* Draw a pixmap specified by IMAGE_DATA of dimensions WIDTH and HEIGHT
-   on the screen S at position X, Y. */
-
-x_draw_pixmap (s, x, y, image_data, width, height)
-     struct screen *s;
+   on the frame F at position X, Y. */
+
+x_draw_pixmap (f, x, y, image_data, width, height)
+     struct frame *f;
      int x, y, width, height;
      char *image_data;
 {
   Pixmap image;
 
   image = XCreateBitmapFromData (x_current_display,
-				 s->display.x->window_desc, image_data,
+				 f->display.x->window_desc, image_data,
 				 width, height);
-  XCopyPlane (x_current_display, image, s->display.x->window_desc,
-	      s->display.x->normal_gc, 0, 0, width, height, x, y);
+  XCopyPlane (x_current_display, image, f->display.x->window_desc,
+	      f->display.x->normal_gc, 0, 0, width, height, x, y);
 }
 #endif
 
@@ -3745,16 +3745,16 @@
   "Get next mouse event out of mouse event buffer.\n\
 Optional ARG non-nil means return nil immediately if no pending event;\n\
 otherwise, wait for an event.  Returns a four-part list:\n\
-  ((X-POS Y-POS) WINDOW SCREEN-PART KEYSEQ TIMESTAMP).\n\
-Normally X-POS and Y-POS are the position of the click on the screen\n\
+  ((X-POS Y-POS) WINDOW FRAME-PART KEYSEQ TIMESTAMP).\n\
+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 SCREEN-PART is non-nil, the event was on a scrollbar;\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\
 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\
-SCREEN-PART is one of the following symbols:\n\
+FRAME-PART is one of the following symbols:\n\
  `vertical-scrollbar', `vertical-thumbup', `vertical-thumbdown',\n\
  `horizontal-scrollbar', `horizontal-thumbleft', `horizontal-thumbright'.\n\
 TIMESTAMP is the lower 23 bits of the X-server's timestamp for\n\
@@ -3768,7 +3768,7 @@
   register Lisp_Object tempy;
   Lisp_Object part, pos, timestamp;
   int prefix;
-  struct screen *s;
+  struct frame *f;
   
   int tem;
   
@@ -3788,26 +3788,26 @@
 	      com_letter = encode_mouse_button (xrep);
 	      mouse_timestamp = xrep.MouseTime;
 
-	      if ((s = x_window_to_screen (xrep.MouseWindow)) != 0)
+	      if ((f = x_window_to_frame (xrep.MouseWindow)) != 0)
 		{
-		  Lisp_Object screen;
+		  Lisp_Object frame;
 		  
-		  if (s->display.x->icon_desc == xrep.MouseWindow)
+		  if (f->display.x->icon_desc == xrep.MouseWindow)
 		    {
-		      x_make_screen_visible (s);
+		      x_make_frame_visible (f);
 		      continue;
 		    }
 
 		  XSET (tempx, Lisp_Int,
-			min (s->width-1, max (0, (xrep.MouseX - s->display.x->internal_border_width)/FONT_WIDTH (s->display.x->font))));
+			min (f->width-1, max (0, (xrep.MouseX - f->display.x->internal_border_width)/FONT_WIDTH (f->display.x->font))));
 		  XSET (tempy, Lisp_Int,
-			min (s->height-1, max (0, (xrep.MouseY - s->display.x->internal_border_width)/FONT_HEIGHT (s->display.x->font))));
+			min (f->height-1, max (0, (xrep.MouseY - f->display.x->internal_border_width)/FONT_HEIGHT (f->display.x->font))));
 		  XSET (timestamp, Lisp_Int, (xrep.MouseTime & 0x7fffff));
-		  XSET (screen, Lisp_Screen, s);
+		  XSET (frame, Lisp_Frame, f);
 		  
 		  pos = Fcons (tempx, Fcons (tempy, Qnil));
 		  Vmouse_window
-		    = Flocate_window_from_coordinates (screen, pos);
+		    = Flocate_window_from_coordinates (frame, pos);
 		  
 		  Vmouse_event
 		    = Fcons (pos,
@@ -3817,7 +3817,7 @@
 						  Fcons (timestamp, Qnil)))));
 		  return Vmouse_event;
 		}
-	      else if ((s = x_window_to_scrollbar (xrep.MouseWindow, &part, &prefix)) != 0)
+	      else if ((f = x_window_to_scrollbar (xrep.MouseWindow, &part, &prefix)) != 0)
 		{
 		  int pos, len;
 		  Lisp_Object keyseq;
@@ -3826,17 +3826,17 @@
 		  keyseq = concat2 (Fchar_to_string (make_number (prefix)),
 				    Fchar_to_string (make_number (com_letter)));
 		  
-		  pos = xrep.MouseY - (s->display.x->v_scrollbar_width - 2);
+		  pos = xrep.MouseY - (f->display.x->v_scrollbar_width - 2);
 		  XSET (tempx, Lisp_Int, pos);
-		  len = ((FONT_HEIGHT (s->display.x->font) * s->height)
-			 + s->display.x->internal_border_width
-			 - (2 * (s->display.x->v_scrollbar_width - 2)));
+		  len = ((FONT_HEIGHT (f->display.x->font) * f->height)
+			 + f->display.x->internal_border_width
+			 - (2 * (f->display.x->v_scrollbar_width - 2)));
 		  XSET (tempy, Lisp_Int, len);
 		  XSET (timestamp, Lisp_Int, (xrep.MouseTime & 0x7fffff));
-		  Vmouse_window = s->selected_window;
+		  Vmouse_window = f->selected_window;
 		  Vmouse_event
 		    = Fcons (Fcons (tempx, Fcons (tempy, 
-						  Fcons (make_number (s->display.x->v_scrollbar_width - 2),
+						  Fcons (make_number (f->display.x->v_scrollbar_width - 2),
 							 Qnil))),
 			     Fcons (Vmouse_window,
 				    Fcons (intern (part),
@@ -3851,25 +3851,25 @@
 	    case MotionNotify:
 
 	      com_letter = x11_encode_mouse_button (xrep);
-	      if ((s = x_window_to_screen (xrep.MouseWindow)) != 0)
+	      if ((f = x_window_to_frame (xrep.MouseWindow)) != 0)
 		{
-		  Lisp_Object screen;
+		  Lisp_Object frame;
 		  
 		  XSET (tempx, Lisp_Int,
-			min (s->width-1,
-			     max (0, (xrep.MouseX - s->display.x->internal_border_width)
-				  / FONT_WIDTH (s->display.x->font))));
+			min (f->width-1,
+			     max (0, (xrep.MouseX - f->display.x->internal_border_width)
+				  / FONT_WIDTH (f->display.x->font))));
 		  XSET (tempy, Lisp_Int,
-			min (s->height-1,
-			     max (0, (xrep.MouseY - s->display.x->internal_border_width)
-				  / FONT_HEIGHT (s->display.x->font))));
+			min (f->height-1,
+			     max (0, (xrep.MouseY - f->display.x->internal_border_width)
+				  / FONT_HEIGHT (f->display.x->font))));
 		  		  
-		  XSET (screen, Lisp_Screen, s);
+		  XSET (frame, Lisp_Frame, f);
 		  XSET (timestamp, Lisp_Int, (xrep.MouseTime & 0x7fffff));
 		  
 		  pos = Fcons (tempx, Fcons (tempy, Qnil));
 		  Vmouse_window
-		    = Flocate_window_from_coordinates (screen, pos);
+		    = Flocate_window_from_coordinates (frame, pos);
 		  
 		  Vmouse_event
 		    = Fcons (pos,
@@ -3884,10 +3884,10 @@
 #endif /* HAVE_X11 */
 
 	    default:
-	      if (s = x_window_to_screen (xrep.MouseWindow))
-		Vmouse_window = s->selected_window;
-	      else if (s = x_window_to_scrollbar (xrep.MouseWindow, &part, &prefix))
-		Vmouse_window = s->selected_window;
+	      if (f = x_window_to_frame (xrep.MouseWindow))
+		Vmouse_window = f->selected_window;
+	      else if (f = x_window_to_scrollbar (xrep.MouseWindow, &part, &prefix))
+		Vmouse_window = f->selected_window;
 	      return Vmouse_event = Qnil;
 	    }
 	}
@@ -3912,8 +3912,8 @@
   int mask;
 
   CHECK_STRING (string, 1);
-  if (SCREEN_IS_X (selected_screen))
-    error ("Selected screen does not understand X protocol.");
+  if (! FRAME_IS_X (selected_frame))
+    error ("Selected frame does not understand X protocol.");
 
   BLOCK_INPUT;
   XStoreBytes ((char *) XSTRING (string)->data, XSTRING (string)->size);
@@ -4400,9 +4400,9 @@
   defsubr (&Sx_set_face);
 #endif
   defsubr (&Sx_geometry);
-  defsubr (&Sx_create_screen);
-  defsubr (&Sfocus_screen);
-  defsubr (&Sunfocus_screen);
+  defsubr (&Sx_create_frame);
+  defsubr (&Sfocus_frame);
+  defsubr (&Sunfocus_frame);
 #if 0
   defsubr (&Sx_horizontal_line);
 #endif
--- a/src/xterm.c	Tue Jul 14 15:57:45 1992 +0000
+++ b/src/xterm.c	Tue Jul 14 16:25:43 1992 +0000
@@ -84,7 +84,7 @@
 #include "sinkmask.h"
 #endif
 #include "gnu.h"
-#include "screen.h"
+#include "frame.h"
 #include "disptab.h"
 #include "buffer.h"
 
@@ -161,27 +161,27 @@
 
 Display *x_current_display;
 
-/* Screen being updated by update_screen.  */
+/* Frame being updated by update_frame.  */
 /* This is set by XTupdate_begin and looked at by all the
    XT functions.  It is zero while not inside an update.
-   In that case, the XT functions assume that `selected_screen'
-   is the screen to apply to.  */
-
-static struct screen *updating_screen;
-
-/* The screen (if any) which has the X window that has keyboard focus.
-   Zero if none.  This is examined by Ffocus_screen in screen.c.  */
-struct screen *x_focus_screen;
-
-/* The screen which currently has the visual highlight, and should get
-   keyboard input (other sorts of input have the screen encoded in the
-   event).  It points to the X focus screen's selected window's
-   screen.  It differs from x_focus_screen when we're using a global
+   In that case, the XT functions assume that `selected_frame'
+   is the frame to apply to.  */
+
+static struct frame *updating_frame;
+
+/* The frame (if any) which has the X window that has keyboard focus.
+   Zero if none.  This is examined by Ffocus_frame in frame.c.  */
+struct frame *x_focus_frame;
+
+/* The frame which currently has the visual highlight, and should get
+   keyboard input (other sorts of input have the frame encoded in the
+   event).  It points to the X focus frame's selected window's
+   frame.  It differs from x_focus_frame when we're using a global
    minibuffer.  */
-static struct screen *x_highlight_screen;
+static struct frame *x_highlight_frame;
 
 /* From .Xdefaults, the value of "emacs.WarpMouse".  If non-zero,
-   mouse is moved to inside of screen when screen is de-iconified.  */
+   mouse is moved to inside of frame when frame is de-iconified.  */
 
 static int warp_mouse_on_deiconify;
 
@@ -261,26 +261,26 @@
 static int XTcursor_to ();
 static int XTclear_end_of_line ();
 
-/* These hooks are called by update_screen at the beginning and end
-   of a screen update.  We record in `updating_screen' the identity
-   of the screen being updated, so that the XT... functions do not
-   need to take a screen as argument.  Most of the XT... functions
+/* These hooks are called by update_frame at the beginning and end
+   of a frame update.  We record in `updating_frame' the identity
+   of the frame being updated, so that the XT... functions do not
+   need to take a frame as argument.  Most of the XT... functions
    should never be called except during an update, the only exceptions
    being XTcursor_to, XTwrite_char and XTreassert_line_highlight.  */
 
 extern int mouse_track_top, mouse_track_left, mouse_track_width;
 
 static
-XTupdate_begin (s)
-     struct screen *s;
+XTupdate_begin (f)
+     struct frame *f;
 {	
   int mask;
 
-  if (s == 0)
+  if (f == 0)
     abort ();
 
-  updating_screen = s;
-  flexlines = s->height;
+  updating_frame = f;
+  flexlines = f->height;
   highlight = 0;
 
   BLOCK_INPUT;
@@ -293,25 +293,25 @@
 static void x_do_pending_expose ();
 
 static
-XTupdate_end (s)
-     struct screen *s;
+XTupdate_end (f)
+     struct frame *f;
 {	
   int mask;
 
-  if (updating_screen == 0
-      || updating_screen != s)
+  if (updating_frame == 0
+      || updating_frame != f)
     abort ();
 
   BLOCK_INPUT;
 #ifndef HAVE_X11
   dumpqueue ();
 #endif
-  adjust_scrollbars (s);
+  adjust_scrollbars (f);
   x_do_pending_expose ();
 
-  x_display_cursor (s, 1);
-
-  updating_screen = 0;
+  x_display_cursor (f, 1);
+
+  updating_frame = 0;
   XFlushQueue ();
   UNBLOCK_INPUT;
 }
@@ -335,7 +335,7 @@
 {
   highlight = new_highlight;
   XTcursor_to (vpos, 0);
-  XTclear_end_of_line (updating_screen->width);
+  XTclear_end_of_line (updating_frame->width);
 }
 
 /* This is used when starting Emacs and when restarting after suspend.
@@ -354,10 +354,10 @@
 static
 XTreset_terminal_modes ()
 {
-/*  XTclear_screen ();  */
+/*  XTclear_frame ();  */
 }
 
-/* Set the nominal cursor position of the screen:
+/* Set the nominal cursor position of the frame:
    where display update commands will take effect.
    This does not affect the place where the cursor-box is displayed.  */
 
@@ -371,10 +371,10 @@
   curs_x = col;
   curs_y = row;
 
-  if (updating_screen == 0)
+  if (updating_frame == 0)
     {
       BLOCK_INPUT;
-      x_display_cursor (selected_screen, 1);
+      x_display_cursor (selected_frame, 1);
       XFlushQueue ();
       UNBLOCK_INPUT;
     }
@@ -387,8 +387,8 @@
    FONT is the default font to use (for glyphs whose font-code is 0).  */
 
 static void
-dumpglyphs (s, left, top, gp, n, hl, font)
-     struct screen *s;
+dumpglyphs (f, left, top, gp, n, hl, font)
+     struct frame *f;
      int left, top;
      register GLYPH *gp; /* Points to first GLYPH. */
      register int n;  /* Number of glyphs to display. */
@@ -396,10 +396,10 @@
      FONT_TYPE *font;
 {
   register int len;
-  Window window = s->display.x->window_desc;
-  GC drawing_gc =   (hl == 2 ? s->display.x->cursor_gc
-		             : (hl ? s->display.x->reverse_gc
-				   : s->display.x->normal_gc));
+  Window window = f->display.x->window_desc;
+  GC drawing_gc =   (hl == 2 ? f->display.x->cursor_gc
+		             : (hl ? f->display.x->reverse_gc
+				   : f->display.x->normal_gc));
 
   if (sizeof (GLYPH) == sizeof (XChar2b))
     XDrawImageString16 (x_current_display, window, drawing_gc,
@@ -415,23 +415,23 @@
 
 #if 0
 static void
-dumpglyphs (s, left, top, gp, n, hl, font)
-     struct screen *s;
+dumpglyphs (f, left, top, gp, n, hl, font)
+     struct frame *f;
      int left, top;
      register GLYPH *gp; /* Points to first GLYPH. */
      register int n;  /* Number of glyphs to display. */
      int hl;
      FONT_TYPE *font;
 {
-  char buf[s->width]; /* Holds characters to be displayed. */
+  char buf[f->width]; /* Holds characters to be displayed. */
   register char *cp;		/* Steps through buf[]. */
   register int tlen = GLYPH_TABLE_LENGTH;
   register Lisp_Object *tbase = GLYPH_TABLE_BASE;
-  Window window = s->display.x->window_desc;
-  int cursor_pixel = s->display.x->cursor_pixel;
-  int fg_pixel = s->display.x->foreground_pixel;
-  int bg_pixel = s->display.x->background_pixel;
-  int intborder = s->display.x->internal_border_width;
+  Window window = f->display.x->window_desc;
+  int cursor_pixel = f->display.x->cursor_pixel;
+  int fg_pixel = f->display.x->foreground_pixel;
+  int bg_pixel = f->display.x->background_pixel;
+  int intborder = f->display.x->internal_border_width;
 
   while (n)
     {
@@ -468,9 +468,9 @@
       if (cf == 0)
 	{
 #ifdef HAVE_X11
-	  GC GC_cursor = s->display.x->cursor_gc;
-	  GC GC_reverse = s->display.x->reverse_gc;
-	  GC GC_normal = s->display.x->normal_gc;
+	  GC GC_cursor = f->display.x->cursor_gc;
+	  GC GC_reverse = f->display.x->reverse_gc;
+	  GC GC_normal = f->display.x->normal_gc;
 
 	  XDrawImageString (x_current_display, window,
 			    (hl == 2
@@ -493,14 +493,14 @@
 	{
 #ifdef HAVE_X11
 	  if (FACE_IS_FONT (cf))
-	    XDrawImageString (x_current_display, s->display.x->window_desc,
+	    XDrawImageString (x_current_display, f->display.x->window_desc,
 			      FACE_GC (cf),
 			      left, top + FONT_BASE (FACE_FONT (cf)),
 			      buf, len);
 	  else if (FACE_IS_IMAGE (cf))
 	    XCopyPlane (x_current_display, FACE_IMAGE (cf),
-			s->display.x->window_desc,
-			s->display.x->normal_gc,
+			f->display.x->window_desc,
+			f->display.x->normal_gc,
 			0, 0,
 			FACE_IMAGE_WIDTH (cf),
 			FACE_IMAGE_HEIGHT (cf), left, top);
@@ -525,7 +525,7 @@
 }
 #endif
 
-/* Output some text at the nominal screen cursor position,
+/* Output some text at the nominal frame cursor position,
    advancing the cursor over the text.
    Output LEN glyphs at START.
 
@@ -539,38 +539,38 @@
 {
   register int temp_length;
   int mask;
-  struct screen *s;
+  struct frame *f;
 
   BLOCK_INPUT;
 
-  s = updating_screen;
-  if (s == 0)
+  f = updating_frame;
+  if (f == 0)
     {
-      s = selected_screen;
+      f = selected_frame;
       /* If not within an update,
-	 output at the screen's visible cursor.  */
-      curs_x = s->cursor_x;
-      curs_y = s->cursor_y;
+	 output at the frame's visible cursor.  */
+      curs_x = f->cursor_x;
+      curs_y = f->cursor_y;
     }
 
-  dumpglyphs (s,
-	     (curs_x * FONT_WIDTH (s->display.x->font)
-	      + s->display.x->internal_border_width),
-	     (curs_y * FONT_HEIGHT (s->display.x->font)
-	      + s->display.x->internal_border_width),
-	     start, len, highlight, s->display.x->font);
+  dumpglyphs (f,
+	     (curs_x * FONT_WIDTH (f->display.x->font)
+	      + f->display.x->internal_border_width),
+	     (curs_y * FONT_HEIGHT (f->display.x->font)
+	      + f->display.x->internal_border_width),
+	     start, len, highlight, f->display.x->font);
 
   /* If we drew on top of the cursor, note that it is turned off.  */
-  if (curs_y == s->phys_cursor_y
-      && curs_x <= s->phys_cursor_x
-      && curs_x + len > s->phys_cursor_x)
-    s->phys_cursor_x = -1;
+  if (curs_y == f->phys_cursor_y
+      && curs_x <= f->phys_cursor_x
+      && curs_x + len > f->phys_cursor_x)
+    f->phys_cursor_x = -1;
   
-  if (updating_screen == 0)
+  if (updating_frame == 0)
     {
-      s->cursor_x += len;
-      x_display_cursor (s, 1);
-      s->cursor_x -= len;
+      f->cursor_x += len;
+      x_display_cursor (f, 1);
+      f->cursor_x -= len;
     }
   else
     curs_x += len;
@@ -586,113 +586,113 @@
 XTclear_end_of_line (first_unused)
      register int first_unused;
 {
-  struct screen *s = updating_screen;
+  struct frame *f = updating_frame;
   int mask;
 
-  if (s == 0)
+  if (f == 0)
     abort ();
 
-  if (curs_y < 0 || curs_y >= s->height)
+  if (curs_y < 0 || curs_y >= f->height)
     return;
   if (first_unused <= 0)
     return;
 
-  if (first_unused >= s->width)
-    first_unused = s->width;
+  if (first_unused >= f->width)
+    first_unused = f->width;
 
   BLOCK_INPUT;
 
   /* Notice if the cursor will be cleared by this operation.  */
-  if (curs_y == s->phys_cursor_y
-      && curs_x <= s->phys_cursor_x
-      && s->phys_cursor_x < first_unused)
-    s->phys_cursor_x = -1;
+  if (curs_y == f->phys_cursor_y
+      && curs_x <= f->phys_cursor_x
+      && f->phys_cursor_x < first_unused)
+    f->phys_cursor_x = -1;
 
 #ifdef HAVE_X11
-  XClearArea (x_current_display, s->display.x->window_desc,
-	      curs_x * FONT_WIDTH (s->display.x->font)
-	      + s->display.x->internal_border_width,
-	      curs_y * FONT_HEIGHT (s->display.x->font)
-	      + s->display.x->internal_border_width,
-	      FONT_WIDTH (s->display.x->font) * (first_unused - curs_x),
-	      FONT_HEIGHT (s->display.x->font), False);
+  XClearArea (x_current_display, f->display.x->window_desc,
+	      curs_x * FONT_WIDTH (f->display.x->font)
+	      + f->display.x->internal_border_width,
+	      curs_y * FONT_HEIGHT (f->display.x->font)
+	      + f->display.x->internal_border_width,
+	      FONT_WIDTH (f->display.x->font) * (first_unused - curs_x),
+	      FONT_HEIGHT (f->display.x->font), False);
 	      
 #else
-  XPixSet (s->display.x->window_desc,
-	   curs_x * FONT_WIDTH (s->display.x->font) + s->display.x->internal_border_width,
-	   curs_y * FONT_HEIGHT (s->display.x->font) + s->display.x->internal_border_width,
-	   FONT_WIDTH (s->display.x->font) * (first_unused - curs_x),
-	   FONT_HEIGHT (s->display.x->font),
-	   s->display.x->background_pixel);	
+  XPixSet (f->display.x->window_desc,
+	   curs_x * FONT_WIDTH (f->display.x->font) + f->display.x->internal_border_width,
+	   curs_y * FONT_HEIGHT (f->display.x->font) + f->display.x->internal_border_width,
+	   FONT_WIDTH (f->display.x->font) * (first_unused - curs_x),
+	   FONT_HEIGHT (f->display.x->font),
+	   f->display.x->background_pixel);	
 #endif /* HAVE_X11 */
 
   UNBLOCK_INPUT;
 }
 
 static
-XTclear_screen ()
+XTclear_frame ()
 {
   int mask;
-  struct screen *s = updating_screen;
-
-  if (s == 0)
-    s = selected_screen;
-
-  s->phys_cursor_x = -1;	/* Cursor not visible.  */
+  struct frame *f = updating_frame;
+
+  if (f == 0)
+    f = selected_frame;
+
+  f->phys_cursor_x = -1;	/* Cursor not visible.  */
   curs_x = 0;			/* Nominal cursor position is top left.  */
   curs_y = 0;
   
   BLOCK_INPUT;
-  XClear (s->display.x->window_desc);
+  XClear (f->display.x->window_desc);
 #ifndef HAVE_X11
-  dumpborder (s, 0);
+  dumpborder (f, 0);
 #endif
   XFlushQueue ();
   UNBLOCK_INPUT;
 }
 
-/* Paint horzontal bars down the screen for a visible bell.
+/* Paint horzontal bars down the frame for a visible bell.
    Note that this may be way too slow on some machines. */
 
-XTflash (s)
-     struct screen *s;
+XTflash (f)
+     struct frame *f;
 {
-  register struct screen_glyphs *active_screen = SCREEN_CURRENT_GLYPHS (s);
+  register struct frame_glyphs *active_frame = FRAME_CURRENT_GLYPHS (f);
   register int i;
   int x, y;
 
-  if (updating_screen != 0)
+  if (updating_frame != 0)
     abort ();
 
   BLOCK_INPUT;
 #ifdef HAVE_X11
 #if 0
-  for (i = s->height * FONT_HEIGHT (s->display.x->font) - 10;
+  for (i = f->height * FONT_HEIGHT (f->display.x->font) - 10;
        i >= 0;    
        i -= 100)	   /* Should be NO LOWER than 75 for speed reasons. */
-    XFillRectangle (x_current_display, s->display.x->window_desc,
-		    s->display.x->cursor_gc,
-		    0, i, s->width * FONT_WIDTH (s->display.x->font)
-		    + 2 * s->display.x->internal_border_width, 25);
+    XFillRectangle (x_current_display, f->display.x->window_desc,
+		    f->display.x->cursor_gc,
+		    0, i, f->width * FONT_WIDTH (f->display.x->font)
+		    + 2 * f->display.x->internal_border_width, 25);
 #endif
 
-  x = (s->width * FONT_WIDTH (s->display.x->font)) / 4;
-  y = (s->height * FONT_HEIGHT (s->display.x->font)) / 4;
-  XFillRectangle (x_current_display, s->display.x->window_desc,
-		  s->display.x->cursor_gc,
+  x = (f->width * FONT_WIDTH (f->display.x->font)) / 4;
+  y = (f->height * FONT_HEIGHT (f->display.x->font)) / 4;
+  XFillRectangle (x_current_display, f->display.x->window_desc,
+		  f->display.x->cursor_gc,
 		  x, y, 2 * x, 2 * y);
-  dumpglyphs (s, (x + s->display.x->internal_border_width),
-	     (y + s->display.x->internal_border_width),
-	     &active_screen->glyphs[(s->height / 4) + 1][(s->width / 4)],
-	     1, 0, s->display.x->font);
+  dumpglyphs (f, (x + f->display.x->internal_border_width),
+	     (y + f->display.x->internal_border_width),
+	     &active_frame->glyphs[(f->height / 4) + 1][(f->width / 4)],
+	     1, 0, f->display.x->font);
 
 #else /* X10 */
-  for (i = s->height * FONT_HEIGHT (s->display.x->font) - 10;
+  for (i = f->height * FONT_HEIGHT (f->display.x->font) - 10;
        i >= 0;
        i -= 50)
-    XPixFill (s->display.x->window_desc, 0, i,
-	      s->width * FONT_WIDTH (s->display.x->font)
-	      + 2 * s->display.x->internal_border_width, 10,
+    XPixFill (f->display.x->window_desc, 0, i,
+	      f->width * FONT_WIDTH (f->display.x->font)
+	      + 2 * f->display.x->internal_border_width, 10,
 	      WHITE_PIX_DEFAULT, ClipModeClipped, GXinvert, AllPlanes);
 #endif /* X10 */
 
@@ -700,35 +700,35 @@
   UNBLOCK_INPUT;
 }
 
-/* Flip background and forground colors of the screen. */
-
-x_invert_screen (s)
-     struct screen *s;
+/* Flip background and forground colors of the frame. */
+
+x_invert_frame (f)
+     struct frame *f;
 {
 #ifdef HAVE_X11
   GC temp;
   unsigned long pix_temp;
 
-  x_display_cursor (s, 0);
-  XClearWindow (x_current_display, s->display.x->window_desc);
-  temp = s->display.x->normal_gc;
-  s->display.x->normal_gc = s->display.x->reverse_gc;
-  s->display.x->reverse_gc = temp;
-  pix_temp = s->display.x->foreground_pixel;
-  s->display.x->foreground_pixel = s->display.x->background_pixel;
-  s->display.x->background_pixel = pix_temp;
-
-  XSetWindowBackground (x_current_display, s->display.x->window_desc,
-			s->display.x->background_pixel);
-  if (s->display.x->background_pixel == s->display.x->cursor_pixel)
+  x_display_cursor (f, 0);
+  XClearWindow (x_current_display, f->display.x->window_desc);
+  temp = f->display.x->normal_gc;
+  f->display.x->normal_gc = f->display.x->reverse_gc;
+  f->display.x->reverse_gc = temp;
+  pix_temp = f->display.x->foreground_pixel;
+  f->display.x->foreground_pixel = f->display.x->background_pixel;
+  f->display.x->background_pixel = pix_temp;
+
+  XSetWindowBackground (x_current_display, f->display.x->window_desc,
+			f->display.x->background_pixel);
+  if (f->display.x->background_pixel == f->display.x->cursor_pixel)
     {
-      s->display.x->cursor_pixel = s->display.x->foreground_pixel;
-      XSetBackground (x_current_display, s->display.x->cursor_gc,
-		      s->display.x->cursor_pixel);
-      XSetForeground (x_current_display, s->display.x->cursor_gc,
-		      s->display.x->background_pixel);
+      f->display.x->cursor_pixel = f->display.x->foreground_pixel;
+      XSetBackground (x_current_display, f->display.x->cursor_gc,
+		      f->display.x->cursor_pixel);
+      XSetForeground (x_current_display, f->display.x->cursor_gc,
+		      f->display.x->background_pixel);
     }
-  redraw_screen (s);
+  redraw_frame (f);
 #endif /* X11 */
 }
 
@@ -744,11 +744,11 @@
 {
   if (visible_bell)
 #if 0
-    XTflash (selected_screen);
+    XTflash (selected_frame);
 #endif
     {
-      x_invert_screen (selected_screen);
-      x_invert_screen (selected_screen);
+      x_invert_frame (selected_frame);
+      x_invert_frame (selected_frame);
     }
   else
     {
@@ -786,11 +786,11 @@
 XTset_terminal_window (n)
      register int n;
 {
-  if (updating_screen == 0)
+  if (updating_frame == 0)
     abort ();
 
-  if ((n <= 0) || (n > updating_screen->height))
-    flexlines = updating_screen->height;
+  if ((n <= 0) || (n > updating_frame->height))
+    flexlines = updating_frame->height;
   else
     flexlines = n;
 }
@@ -804,8 +804,8 @@
 {
   register int topregion, bottomregion;
   register int length, newtop, mask;
-  register struct screen *s = updating_screen;
-  int intborder = s->display.x->internal_border_width;
+  register struct frame *f = updating_frame;
+  int intborder = f->display.x->internal_border_width;
 
   if (curs_y >= flexlines)
     return;
@@ -822,18 +822,18 @@
   if ((length > 0) && (newtop <= flexlines))
     {
 #ifdef HAVE_X11
-      XCopyArea (x_current_display, s->display.x->window_desc,
-		 s->display.x->window_desc, s->display.x->normal_gc,
-		 intborder, topregion * FONT_HEIGHT (s->display.x->font) + intborder,
-		 s->width * FONT_WIDTH (s->display.x->font),
-		 length * FONT_HEIGHT (s->display.x->font), intborder,
-		 newtop * FONT_HEIGHT (s->display.x->font) + intborder);
+      XCopyArea (x_current_display, f->display.x->window_desc,
+		 f->display.x->window_desc, f->display.x->normal_gc,
+		 intborder, topregion * FONT_HEIGHT (f->display.x->font) + intborder,
+		 f->width * FONT_WIDTH (f->display.x->font),
+		 length * FONT_HEIGHT (f->display.x->font), intborder,
+		 newtop * FONT_HEIGHT (f->display.x->font) + intborder);
 #else
-      XMoveArea (s->display.x->window_desc,
-		 intborder, topregion * FONT_HEIGHT (s->display.x->font) + intborder,
-		 intborder, newtop * FONT_HEIGHT (s->display.x->font) + intborder,
-		 s->width * FONT_WIDTH (s->display.x->font),
-		 length * FONT_HEIGHT (s->display.x->font));
+      XMoveArea (f->display.x->window_desc,
+		 intborder, topregion * FONT_HEIGHT (f->display.x->font) + intborder,
+		 intborder, newtop * FONT_HEIGHT (f->display.x->font) + intborder,
+		 f->width * FONT_WIDTH (f->display.x->font),
+		 length * FONT_HEIGHT (f->display.x->font));
       /* Now we must process any ExposeRegion events that occur
 	 if the area being copied from is obscured.
 	 We can't let it wait because further i/d operations
@@ -847,17 +847,17 @@
   if (length > 0)
     {
 #ifdef HAVE_X11
-      XClearArea (x_current_display, s->display.x->window_desc, intborder, 
-		  topregion * FONT_HEIGHT (s->display.x->font) + intborder,
-		  s->width * FONT_WIDTH (s->display.x->font),
-		  n * FONT_HEIGHT (s->display.x->font), False);
+      XClearArea (x_current_display, f->display.x->window_desc, intborder, 
+		  topregion * FONT_HEIGHT (f->display.x->font) + intborder,
+		  f->width * FONT_WIDTH (f->display.x->font),
+		  n * FONT_HEIGHT (f->display.x->font), False);
 #else
-      XPixSet (s->display.x->window_desc,
+      XPixSet (f->display.x->window_desc,
 	       intborder,
-	       topregion * FONT_HEIGHT (s->display.x->font) + intborder,
-	       s->width * FONT_WIDTH (s->display.x->font),
-	       n * FONT_HEIGHT (s->display.x->font),
-	       s->display.x->background_pixel);
+	       topregion * FONT_HEIGHT (f->display.x->font) + intborder,
+	       f->width * FONT_WIDTH (f->display.x->font),
+	       n * FONT_HEIGHT (f->display.x->font),
+	       f->display.x->background_pixel);
 #endif /* HAVE_X11 */
     }
 }
@@ -870,8 +870,8 @@
      register int n;
 {
   int mask;
-  register struct screen *s = updating_screen;
-  int intborder = s->display.x->internal_border_width;
+  register struct frame *f = updating_frame;
+  int intborder = f->display.x->internal_border_width;
 
   if (curs_y >= flexlines)
     return;
@@ -885,50 +885,50 @@
       if (flexlines >= (curs_y + 1))
 	{
 #ifdef HAVE_X11
-	  XClearArea (x_current_display, s->display.x->window_desc, intborder,
-		      curs_y * FONT_HEIGHT (s->display.x->font) + intborder,
-		      s->width * FONT_WIDTH (s->display.x->font),
-		      (flexlines - curs_y) * FONT_HEIGHT (s->display.x->font), False);
+	  XClearArea (x_current_display, f->display.x->window_desc, intborder,
+		      curs_y * FONT_HEIGHT (f->display.x->font) + intborder,
+		      f->width * FONT_WIDTH (f->display.x->font),
+		      (flexlines - curs_y) * FONT_HEIGHT (f->display.x->font), False);
 #else
-	  XPixSet (s->display.x->window_desc,
-		   intborder, curs_y * FONT_HEIGHT (s->display.x->font) + intborder,
-		   s->width * FONT_WIDTH (s->display.x->font),
-		   (flexlines - curs_y) * FONT_HEIGHT (s->display.x->font),
-		   s->display.x->background_pixel);
+	  XPixSet (f->display.x->window_desc,
+		   intborder, curs_y * FONT_HEIGHT (f->display.x->font) + intborder,
+		   f->width * FONT_WIDTH (f->display.x->font),
+		   (flexlines - curs_y) * FONT_HEIGHT (f->display.x->font),
+		   f->display.x->background_pixel);
 #endif /* HAVE_X11 */
 	}
     }
   else
     {
 #ifdef HAVE_X11
-      XCopyArea (x_current_display, s->display.x->window_desc,
-		 s->display.x->window_desc, s->display.x->normal_gc,
+      XCopyArea (x_current_display, f->display.x->window_desc,
+		 f->display.x->window_desc, f->display.x->normal_gc,
 		 intborder,
-		 (curs_y + n) * FONT_HEIGHT (s->display.x->font) + intborder,
-		 s->width * FONT_WIDTH (s->display.x->font),
-		 (flexlines - (curs_y + n)) * FONT_HEIGHT (s->display.x->font),
-		 intborder, curs_y * FONT_HEIGHT (s->display.x->font) + intborder);
-      XClearArea (x_current_display, s->display.x->window_desc,
+		 (curs_y + n) * FONT_HEIGHT (f->display.x->font) + intborder,
+		 f->width * FONT_WIDTH (f->display.x->font),
+		 (flexlines - (curs_y + n)) * FONT_HEIGHT (f->display.x->font),
+		 intborder, curs_y * FONT_HEIGHT (f->display.x->font) + intborder);
+      XClearArea (x_current_display, f->display.x->window_desc,
 		  intborder,
-		  (flexlines - n) * FONT_HEIGHT (s->display.x->font) + intborder,
-		  s->width * FONT_WIDTH (s->display.x->font),
-		  n * FONT_HEIGHT (s->display.x->font), False);
+		  (flexlines - n) * FONT_HEIGHT (f->display.x->font) + intborder,
+		  f->width * FONT_WIDTH (f->display.x->font),
+		  n * FONT_HEIGHT (f->display.x->font), False);
 #else
-      XMoveArea (s->display.x->window_desc,
+      XMoveArea (f->display.x->window_desc,
 		 intborder,
-		 (curs_y + n) * FONT_HEIGHT (s->display.x->font) + intborder,
-		 intborder, curs_y * FONT_HEIGHT (s->display.x->font) + intborder,
-		 s->width * FONT_WIDTH (s->display.x->font),
-		 (flexlines - (curs_y + n)) * FONT_HEIGHT (s->display.x->font));
+		 (curs_y + n) * FONT_HEIGHT (f->display.x->font) + intborder,
+		 intborder, curs_y * FONT_HEIGHT (f->display.x->font) + intborder,
+		 f->width * FONT_WIDTH (f->display.x->font),
+		 (flexlines - (curs_y + n)) * FONT_HEIGHT (f->display.x->font));
       /* Now we must process any ExposeRegion events that occur
 	 if the area being copied from is obscured.
 	 We can't let it wait because further i/d operations
 	 may want to copy this area to another area.  */
       x_read_exposes ();
-      XPixSet (s->display.x->window_desc, intborder,
-	       (flexlines - n) * FONT_HEIGHT (s->display.x->font) + intborder,
-	       s->width * FONT_WIDTH (s->display.x->font),
-	       n * FONT_HEIGHT (s->display.x->font), s->display.x->background_pixel);
+      XPixSet (f->display.x->window_desc, intborder,
+	       (flexlines - n) * FONT_HEIGHT (f->display.x->font) + intborder,
+	       f->width * FONT_WIDTH (f->display.x->font),
+	       n * FONT_HEIGHT (f->display.x->font), f->display.x->background_pixel);
 #endif /* HAVE_X11 */
     }
 }
@@ -939,11 +939,11 @@
 XTins_del_lines (vpos, n)
      int vpos, n;
 {
-  if (updating_screen == 0)
+  if (updating_frame == 0)
     abort ();
 
   /* Hide the cursor.  */
-  x_display_cursor (updating_screen, 0);
+  x_display_cursor (updating_frame, 0);
 
   XTcursor_to (vpos, 0);
 
@@ -958,26 +958,26 @@
 
 static void clear_cursor ();
 
-/* Output into a rectangle of an X-window (for screen S)
-   the characters in s->phys_lines that overlap that rectangle.
+/* Output into a rectangle of an X-window (for frame F)
+   the characters in f->phys_lines that overlap that rectangle.
    TOP and LEFT are the position of the upper left corner of the rectangle.
    ROWS and COLS are the size of the rectangle.  */
 
 static void
-dumprectangle (s, left, top, cols, rows)
-     struct screen *s;
+dumprectangle (f, left, top, cols, rows)
+     struct frame *f;
      register int left, top, cols, rows;
 {
-  register struct screen_glyphs *active_screen = SCREEN_CURRENT_GLYPHS (s);
+  register struct frame_glyphs *active_frame = FRAME_CURRENT_GLYPHS (f);
   int cursor_cleared = 0;
   int bottom, right;
   register int y;
 
-  if (SCREEN_GARBAGED_P (s))
+  if (FRAME_GARBAGED_P (f))
     return;
 
-  top -= s->display.x->internal_border_width;
-  left -= s->display.x->internal_border_width;
+  top -= f->display.x->internal_border_width;
+  left -= f->display.x->internal_border_width;
 
   /* Express rectangle as four edges, instead of position-and-size.  */
   bottom = top + rows;
@@ -987,29 +987,29 @@
   /* If the rectangle includes any of the internal border area,
      redisplay the border emphasis.  */
   if (top < 0 || left < 0
-      || bottom > s->height * FONT_HEIGHT (s->display.x->font)
-      || right > s->width * FONT_WIDTH (s->display.x->font))
-    dumpborder (s, 0);
+      || bottom > f->height * FONT_HEIGHT (f->display.x->font)
+      || right > f->width * FONT_WIDTH (f->display.x->font))
+    dumpborder (f, 0);
 #endif /* HAVE_X11 */
   
   /* Convert rectangle edges in pixels to edges in chars.
      Round down for left and top, up for right and bottom.  */
-  top /= FONT_HEIGHT (s->display.x->font);
-  left /= FONT_WIDTH (s->display.x->font);
-  bottom += (FONT_HEIGHT (s->display.x->font) - 1);
-  right += (FONT_WIDTH (s->display.x->font) - 1);
-  bottom /= FONT_HEIGHT (s->display.x->font);
-  right /= FONT_WIDTH (s->display.x->font);
+  top /= FONT_HEIGHT (f->display.x->font);
+  left /= FONT_WIDTH (f->display.x->font);
+  bottom += (FONT_HEIGHT (f->display.x->font) - 1);
+  right += (FONT_WIDTH (f->display.x->font) - 1);
+  bottom /= FONT_HEIGHT (f->display.x->font);
+  right /= FONT_WIDTH (f->display.x->font);
 
   /* Clip the rectangle to what can be visible.  */
   if (left < 0)
     left = 0;
   if (top < 0)
     top = 0;
-  if (right > s->width)
-    right = s->width;
-  if (bottom > s->height)
-    bottom = s->height;
+  if (right > f->width)
+    right = f->width;
+  if (bottom > f->height)
+    bottom = f->height;
 
   /* Get size in chars of the rectangle.  */
   cols = right - left;
@@ -1021,10 +1021,10 @@
 
   /* Turn off the cursor if it is in the rectangle.
      We will turn it back on afterward.  */
-  if ((s->phys_cursor_x >= left) && (s->phys_cursor_x < right)
-      && (s->phys_cursor_y >= top) && (s->phys_cursor_y < bottom))
+  if ((f->phys_cursor_x >= left) && (f->phys_cursor_x < right)
+      && (f->phys_cursor_y >= top) && (f->phys_cursor_y < bottom))
     {
-      clear_cursor (s);
+      clear_cursor (f);
       cursor_cleared = 1;
     }
 
@@ -1032,24 +1032,24 @@
 
   for (y = top; y < bottom; y++)
     {
-      GLYPH *line = &active_screen->glyphs[y][left];
-
-      if (! active_screen->enable[y] || left > active_screen->used[y])
+      GLYPH *line = &active_frame->glyphs[y][left];
+
+      if (! active_frame->enable[y] || left > active_frame->used[y])
 	continue;
 
-      dumpglyphs (s,
-		 (left * FONT_WIDTH (s->display.x->font)
-		  + s->display.x->internal_border_width),
-		 (y * FONT_HEIGHT (s->display.x->font)
-		  + s->display.x->internal_border_width),
-		 line, min (cols, active_screen->used[y] - left),
-		 active_screen->highlight[y], s->display.x->font);
+      dumpglyphs (f,
+		 (left * FONT_WIDTH (f->display.x->font)
+		  + f->display.x->internal_border_width),
+		 (y * FONT_HEIGHT (f->display.x->font)
+		  + f->display.x->internal_border_width),
+		 line, min (cols, active_frame->used[y] - left),
+		 active_frame->highlight[y], f->display.x->font);
     }
 
   /* Turn the cursor on if we turned it off.  */
 
   if (cursor_cleared)
-    x_display_cursor (s, 1);
+    x_display_cursor (f, 1);
 }
 
 #ifndef HAVE_X11
@@ -1063,71 +1063,71 @@
 
   while (dequeue_event (&r, &x_expose_queue))
     {
-      struct screen *s = x_window_to_screen (r.window);
-      if (s->display.x->icon_desc == r.window)
-	refreshicon (s);
+      struct frame *f = x_window_to_frame (r.window);
+      if (f->display.x->icon_desc == r.window)
+	refreshicon (f);
       else
-	dumprectangle (s, r.x, r.y, r.width, r.height);
+	dumprectangle (f, r.x, r.y, r.width, r.height);
     }
   XFlushQueue ();
 }
 #endif
 
 /* Process all expose events that are pending.
-   Redraws the cursor if necessary on any screen that
-   is not in the process of being updated with update_screen.  */
+   Redraws the cursor if necessary on any frame that
+   is not in the process of being updated with update_frame.  */
 
 static void
 x_do_pending_expose ()
 {
   int mask;
-  struct screen *s;
-  Lisp_Object tail, screen;
+  struct frame *f;
+  Lisp_Object tail, frame;
 
   if (expose_all_windows)
     {
       expose_all_windows = 0;
-      for (tail = Vscreen_list; CONSP (tail); tail = XCONS (tail)->cdr)
+      for (tail = Vframe_list; CONSP (tail); tail = XCONS (tail)->cdr)
 	{
 	  register int temp_width, temp_height;
 	  int intborder;
 
-	  screen = XCONS (tail)->car;
-	  if (XTYPE (screen) != Lisp_Screen)
+	  frame = XCONS (tail)->car;
+	  if (XTYPE (frame) != Lisp_Frame)
 	    continue;
-	  s = XSCREEN (screen);
-	  if (! SCREEN_IS_X (s))
+	  f = XFRAME (frame);
+	  if (! FRAME_IS_X (f))
 	    continue;
-	  if (!s->visible)
+	  if (!f->visible)
 	    continue;
-	  if (!s->display.x->needs_exposure)
+	  if (!f->display.x->needs_exposure)
 	    continue;
 
-	  intborder = s->display.x->internal_border_width;
-
-	  clear_cursor (s);
-	  XGetWindowInfo (s->display.x->window_desc, &windowinfo);
+	  intborder = f->display.x->internal_border_width;
+
+	  clear_cursor (f);
+	  XGetWindowInfo (f->display.x->window_desc, &windowinfo);
 	  temp_width = ((windowinfo.width - 2 * intborder
-			 - s->display.x->v_scrollbar_width)
-			/ FONT_WIDTH (s->display.x->font));
+			 - f->display.x->v_scrollbar_width)
+			/ FONT_WIDTH (f->display.x->font));
 	  temp_height = ((windowinfo.height- 2 * intborder
-			  - s->display.x->h_scrollbar_height)
-			 / FONT_HEIGHT (s->display.x->font));
-	  if (temp_width != s->width || temp_height != s->height)
+			  - f->display.x->h_scrollbar_height)
+			 / FONT_HEIGHT (f->display.x->font));
+	  if (temp_width != f->width || temp_height != f->height)
 	    {
-	      change_screen_size (s, max (1, temp_height),
+	      change_frame_size (f, max (1, temp_height),
 				  max (1, temp_width), 0);
-	      x_resize_scrollbars (s);
+	      x_resize_scrollbars (f);
 	    }
-	  s->display.x->left_pos = windowinfo.x;
-	  s->display.x->top_pos = windowinfo.y;
-	  dumprectangle (s, 0, 0, PIXEL_WIDTH (s), PIXEL_HEIGHT (s));
+	  f->display.x->left_pos = windowinfo.x;
+	  f->display.x->top_pos = windowinfo.y;
+	  dumprectangle (f, 0, 0, PIXEL_WIDTH (f), PIXEL_HEIGHT (f));
 #if 0
-	  dumpborder (s, 0);
+	  dumpborder (f, 0);
 #endif
-	  s->display.x->needs_exposure = 0;
-	  if (updating_screen != s)
-	    x_display_cursor (s, 1);
+	  f->display.x->needs_exposure = 0;
+	  if (updating_frame != f)
+	    x_display_cursor (f, 1);
 	  XFlushQueue ();
 	}
     }
@@ -1143,133 +1143,133 @@
 
 #ifdef HAVE_X11
 static void
-screen_highlight (screen)
-     struct screen *screen;
+frame_highlight (frame)
+     struct frame *frame;
 {
   if (! EQ (Vx_no_window_manager, Qnil))
-    XSetWindowBorder (x_current_display, screen->display.x->window_desc,
-		      screen->display.x->border_pixel);
-  x_display_cursor (screen, 1);
+    XSetWindowBorder (x_current_display, frame->display.x->window_desc,
+		      frame->display.x->border_pixel);
+  x_display_cursor (frame, 1);
 }
 
 static void
-screen_unhighlight (screen)
-     struct screen *screen;
+frame_unhighlight (frame)
+     struct frame *frame;
 {
   if (! EQ (Vx_no_window_manager, Qnil))
-    XSetWindowBorderPixmap (x_current_display, screen->display.x->window_desc,
-			    screen->display.x->border_tile);
-  x_display_cursor (screen, 1);
+    XSetWindowBorderPixmap (x_current_display, frame->display.x->window_desc,
+			    frame->display.x->border_tile);
+  x_display_cursor (frame, 1);
 }
 #else	/* X10 */
-/* Dump the border-emphasis of screen S.
-   If S is selected, this is a lining of the same color as the border,
+/* Dump the border-emphasis of frame F.
+   If F is selected, this is a lining of the same color as the border,
    just within the border, occupying a portion of the internal border.
-   If S is not selected, it is background in the same place.
+   If F is not selected, it is background in the same place.
    If ALWAYS is 0, don't bother explicitly drawing if it's background.
 
-   ALWAYS = 1 is used when a screen becomes selected or deselected.
+   ALWAYS = 1 is used when a frame becomes selected or deselected.
    In that case, we also turn the cursor off and on again
    so it will appear in the proper shape (solid if selected; else hollow.)  */
 
 static void
-dumpborder (s, always)
-     struct screen *s;
+dumpborder (f, always)
+     struct frame *f;
      int always;
 {
-  int thickness = s->display.x->internal_border_width / 2;
-  int width = PIXEL_WIDTH (s);
-  int height = PIXEL_HEIGHT (s);
+  int thickness = f->display.x->internal_border_width / 2;
+  int width = PIXEL_WIDTH (f);
+  int height = PIXEL_HEIGHT (f);
   int pixel;
 
-  if (s != selected_screen)
+  if (f != selected_frame)
     {
       if (!always)
 	return;
 
-      pixel = s->display.x->background_pixel;
+      pixel = f->display.x->background_pixel;
     }
   else
     {
-      pixel = s->display.x->border_pixel;
+      pixel = f->display.x->border_pixel;
     }
 
-  XPixSet (s->display.x->window_desc, 0, 0, width, thickness, pixel);
-  XPixSet (s->display.x->window_desc, 0, 0, thickness, height, pixel);
-  XPixSet (s->display.x->window_desc, 0, height - thickness, width,
+  XPixSet (f->display.x->window_desc, 0, 0, width, thickness, pixel);
+  XPixSet (f->display.x->window_desc, 0, 0, thickness, height, pixel);
+  XPixSet (f->display.x->window_desc, 0, height - thickness, width,
 	   thickness, pixel);
-  XPixSet (s->display.x->window_desc, width - thickness, 0, thickness,
+  XPixSet (f->display.x->window_desc, width - thickness, 0, thickness,
 	   height, pixel);
 
   if (always)
-    x_display_cursor (s, 1);
+    x_display_cursor (f, 1);
 }
 #endif	/* X10 */
 
-static void XTscreen_rehighlight ();
-
-/* The focus has changed.  Update the screens as necessary to reflect
-   the new situation.  Note that we can't change the selected screen
+static void XTframe_rehighlight ();
+
+/* The focus has changed.  Update the frames as necessary to reflect
+   the new situation.  Note that we can't change the selected frame
    here, because the lisp code we are interrupting might become confused.
-   Each event gets marked with the screen in which it occured, so the
+   Each event gets marked with the frame in which it occured, so the
    lisp code can tell when the switch took place by examining the events.  */
 
 static void
-x_new_focus_screen (screen)
-     struct screen *screen;
+x_new_focus_frame (frame)
+     struct frame *frame;
 {
-  struct screen *old_focus = x_focus_screen;
+  struct frame *old_focus = x_focus_frame;
   int events_enqueued = 0;
 
-  if (screen != x_focus_screen)
+  if (frame != x_focus_frame)
     {
       /* Set this before calling other routines, so that they see 
-	 the correct value of x_focus_screen.  */
-      x_focus_screen = screen;
+	 the correct value of x_focus_frame.  */
+      x_focus_frame = frame;
 
       if (old_focus && old_focus->auto_lower)
-	x_lower_screen (old_focus);
+	x_lower_frame (old_focus);
 
 #if 0
-      selected_screen = screen;
-      XSET (XWINDOW (selected_screen->selected_window)->screen,
-	    Lisp_Screen, selected_screen);
-      Fselect_window (selected_screen->selected_window);
-      choose_minibuf_screen ();
+      selected_frame = frame;
+      XSET (XWINDOW (selected_frame->selected_window)->frame,
+	    Lisp_Frame, selected_frame);
+      Fselect_window (selected_frame->selected_window);
+      choose_minibuf_frame ();
 #endif
 
-      if (x_focus_screen && x_focus_screen->auto_raise)
-	x_raise_screen (x_focus_screen);
+      if (x_focus_frame && x_focus_frame->auto_raise)
+	x_raise_frame (x_focus_frame);
     }
 
-  XTscreen_rehighlight ();
+  XTframe_rehighlight ();
 }
 
 
-/* The focus has changed, or we have make a screen's selected window
-   point to a window on a different screen (this happens with global
-   minibuffer screens).  Shift the highlight as appropriate.  */
+/* The focus has changed, or we have make a frame's selected window
+   point to a window on a different frame (this happens with global
+   minibuffer frames).  Shift the highlight as appropriate.  */
 static void
-XTscreen_rehighlight ()
+XTframe_rehighlight ()
 {
-  struct screen *old_highlight = x_highlight_screen;
-
-  if (x_focus_screen)
+  struct frame *old_highlight = x_highlight_frame;
+
+  if (x_focus_frame)
     {
-      x_highlight_screen = XSCREEN (SCREEN_FOCUS_SCREEN (x_focus_screen));
-      if (x_highlight_screen->display.nothing == 0)
-	XSET (SCREEN_FOCUS_SCREEN (x_focus_screen), Lisp_Screen,
-	      (x_highlight_screen = x_focus_screen));
+      x_highlight_frame = XFRAME (FRAME_FOCUS_FRAME (x_focus_frame));
+      if (x_highlight_frame->display.nothing == 0)
+	XSET (FRAME_FOCUS_FRAME (x_focus_frame), Lisp_Frame,
+	      (x_highlight_frame = x_focus_frame));
     }
   else
-    x_highlight_screen = 0;
-
-  if (x_highlight_screen != old_highlight)
+    x_highlight_frame = 0;
+
+  if (x_highlight_frame != old_highlight)
     {
       if (old_highlight)
-	screen_unhighlight (old_highlight);
-      if (x_highlight_screen)
-	screen_highlight (x_highlight_screen);
+	frame_unhighlight (old_highlight);
+      if (x_highlight_frame)
+	frame_highlight (x_highlight_frame);
     }
 }
 
@@ -1293,7 +1293,7 @@
 
 #if 0
 /* Set *RESULT to an emacs input_event corresponding to MOTION_EVENT.
-   S is the screen in which the event occurred.
+   F is the frame in which the event occurred.
 
    WINDOW_TYPE says whether the event happened in a scrollbar window
    or a text window, affecting the format of the event created.
@@ -1305,10 +1305,10 @@
    don't return an event; set result->kind to no_event.  */
 
 static void
-notice_mouse_movement (result, motion_event, s, window_type, part)
+notice_mouse_movement (result, motion_event, f, window_type, part)
      struct input_event *result;
      XMotionEvent motion_event;
-     struct screen *s;
+     struct frame *f;
      int window_type;
      Lisp_Object part;
 {
@@ -1320,7 +1320,7 @@
   result->kind = no_event;
   
   if (XQueryPointer (x_current_display,
-		     s->display.x->window_desc,
+		     f->display.x->window_desc,
 		     &root_window, &w,
 		     &root_x, &root_y, &pix_x, &pix_y,
 		     &keys_and_buttons)
@@ -1332,7 +1332,7 @@
     return Qnil;
 #endif
 
-  pixel_to_glyph_translation (s, pix_x, pix_y, &x, &y);
+  pixel_to_glyph_translation (f, pix_x, pix_y, &x, &y);
   if (x == x_mouse_x && y == x_mouse_y)
     return;
 
@@ -1344,7 +1344,7 @@
     {
       int modeline_p;
 
-      Vmouse_window = window_from_coordinates (s, x, y, &modeline_p);
+      Vmouse_window = window_from_coordinates (f, x, y, &modeline_p);
 
       if (XTYPE (Vmouse_window) == Lisp_Window)
 	mouse_buffer_offset
@@ -1353,11 +1353,11 @@
 	mouse_buffer_offset = 0;
 
       if (EQ (Vmouse_window, Qnil))
-	Vmouse_screen_part = Qnil;
+	Vmouse_frame_part = Qnil;
       else if (modeline_p)
-	Vmouse_screen_part = Qmodeline_part;
+	Vmouse_frame_part = Qmodeline_part;
       else
-	Vmouse_screen_part = Qtext_part;
+	Vmouse_frame_part = Qtext_part;
       
       result->kind = window_sys_event;
       result->code = Qmouse_moved;
@@ -1366,9 +1366,9 @@
     }
   else if (window_type == scrollbar_window)  /* Scrollbar */
     {
-      Vmouse_window = s->selected_window;
+      Vmouse_window = f->selected_window;
       mouse_buffer_offset = 0;
-      Vmouse_screen_part = part;
+      Vmouse_frame_part = part;
 
       result->kind = window_sys_event;
       result->code = Qmouse_moved;
@@ -1384,19 +1384,19 @@
 /* Mouse clicks and mouse movement.  Rah.  */
 #ifdef HAVE_X11
 
-/* Given a pixel position (PIX_X, PIX_Y) on the screen S, return
+/* Given a pixel position (PIX_X, PIX_Y) on the frame F, return
    glyph co-ordinates in (*X, *Y).  Set *BOUNDS to the rectangle
    that the glyph at X, Y occupies, if BOUNDS != 0.  */
 static void
-pixel_to_glyph_coords (s, pix_x, pix_y, x, y, bounds)
-     SCREEN_PTR s;
+pixel_to_glyph_coords (f, pix_x, pix_y, x, y, bounds)
+     FRAME_PTR f;
      register unsigned int pix_x, pix_y;
      register int *x, *y;
      XRectangle *bounds;
 {
-  int ibw = s->display.x->internal_border_width;
+  int ibw = f->display.x->internal_border_width;
   int width, height;
-  FONT_TYPE *font = s->display.x->font;
+  FONT_TYPE *font = f->display.x->font;
 
   width = FONT_WIDTH (font);
   height = FONT_HEIGHT (font);
@@ -1404,16 +1404,16 @@
   /* What line is it on?  */
   if (pix_y < ibw)
     *y = 0;
-  else if (pix_y > s->display.x->pixel_height - ibw)
-    *y = SCREEN_HEIGHT (s) - 1;
+  else if (pix_y > f->display.x->pixel_height - ibw)
+    *y = FRAME_HEIGHT (f) - 1;
   else
     *y = (pix_y - ibw) / height;
 
   /* And what column?  */
   if (pix_x < ibw)
     *x = 0;
-  else if (pix_x > s->display.x->pixel_width - ibw)
-    *x = SCREEN_WIDTH (s) - 1;
+  else if (pix_x > f->display.x->pixel_width - ibw)
+    *x = FRAME_WIDTH (f) - 1;
   else
     *x = (pix_x - ibw) / width;
 
@@ -1441,7 +1441,7 @@
 	  | ((state & Mod1Mask)               ? meta_modifier  : 0));
 }
 
-extern struct screen *x_window_to_scrollbar ();
+extern struct frame *x_window_to_scrollbar ();
 extern Lisp_Object Vmouse_event;
 
 /* Prepare a mouse-event in *RESULT for placement in the input queue.
@@ -1453,10 +1453,10 @@
    otherwise it happened in a scrollbar. */
 
 static Lisp_Object
-construct_mouse_click (result, event, s, part, prefix)
+construct_mouse_click (result, event, f, part, prefix)
      struct input_event *result;
      XButtonEvent *event;
-     struct screen *s;
+     struct frame *f;
      int prefix;
      Lisp_Object part;
 {
@@ -1487,28 +1487,28 @@
     {
       int pos, len;
 
-      pos = event->y - (s->display.x->v_scrollbar_width - 2);
+      pos = event->y - (f->display.x->v_scrollbar_width - 2);
       XSET (x_mouse_x, Lisp_Int, pos);
-      len = ((FONT_HEIGHT (s->display.x->font) * s->height)
-	     + s->display.x->internal_border_width
-	     - (2 * (s->display.x->v_scrollbar_width - 2)));
+      len = ((FONT_HEIGHT (f->display.x->font) * f->height)
+	     + f->display.x->internal_border_width
+	     - (2 * (f->display.x->v_scrollbar_width - 2)));
       XSET (x_mouse_y, Lisp_Int, len);
 
       result->kind = scrollbar_click;
       result->part = part;
-      XSET (result->x, Lisp_Int, (s->display.x->top_pos - event->y));
-      XSET (result->y, Lisp_Int, s->display.x->pixel_height);
-      result->screen = s;
+      XSET (result->x, Lisp_Int, (f->display.x->top_pos - event->y));
+      XSET (result->y, Lisp_Int, f->display.x->pixel_height);
+      result->frame = f;
     }
   else				/* Text Window Event */
     {
       int row, column;
 
-      pixel_to_glyph_coords (s, event->x, event->y, &column, &row, NULL);
+      pixel_to_glyph_coords (f, event->x, event->y, &column, &row, NULL);
       result->kind = mouse_click;
       result->x = column;
       result->y = row;
-      result->screen = s;
+      result->frame = f;
     }
 }
 
@@ -1533,7 +1533,7 @@
    the server, which is very important.  */
 
 /* Where the mouse was last time we reported a mouse event.  */
-static SCREEN_PTR last_mouse_screen;
+static FRAME_PTR last_mouse_frame;
 static XRectangle last_mouse_glyph;
 
 /* This is a hack.  We would really prefer that XTmouse_position would
@@ -1552,8 +1552,8 @@
    the mainstream emacs code by setting mouse_moved.  If not, ask for
    another motion event, so we can check again the next time it moves.  */
 static void
-note_mouse_position (screen, event)
-     SCREEN_PTR screen;
+note_mouse_position (frame, event)
+     FRAME_PTR frame;
      XMotionEvent *event;
 
 {
@@ -1587,8 +1587,8 @@
    */
 
 static void
-XTmouse_position (s, x, y, time)
-     SCREEN_PTR *s;
+XTmouse_position (f, x, y, time)
+     FRAME_PTR *f;
      Lisp_Object *x, *y;
      unsigned long *time;
 {
@@ -1602,12 +1602,12 @@
      innermost window containing the mouse.  
 
   /* There doesn't seem to be any way to just get the innermost window
-     containing the pointer, no matter what X screen it's on; you have
+     containing the pointer, no matter what X frame it's on; you have
      to guess a window, and then X will tell you which one of that
      window's children it's in.  If the pointer isn't in any of that
      window's children, it gives you a root window that contains it.
 
-     So we start with the selected screen's window and chase down
+     So we start with the selected frame's window and chase down
      branches under the guidance of XQueryPointer until we hit a leaf
      (all of the Emacs windows we care about are leaf windows).  If at
      any time XQueryPointer returns false, that means that the current
@@ -1615,7 +1615,7 @@
      so we start with the root window XQueryPointer has given us and
      start again.  */
 
-  guess = selected_screen->display.x->window_desc;
+  guess = selected_frame->display.x->window_desc;
   for (;;)
     if (XQueryPointer (d, guess, &root, &child,
 		       &dummy, &dummy, &ix, &iy, (unsigned int *) &dummy))
@@ -1628,16 +1628,16 @@
       }
     else
       /* When XQueryPointer returns False, the pointer isn't in guess
-         anymore, but root is the root window of the screen we should
+         anymore, but root is the root window of the frame we should
          try instead.  */
       guess = root;
 
-  *s = last_mouse_screen = x_window_to_screen (guess);
-  if (! *s)
+  *f = last_mouse_frame = x_window_to_frame (guess);
+  if (! *f)
     *x = *y = Qnil;
   else
     {
-      pixel_to_glyph_coords (*s, ix, iy, &ix, &iy, &last_mouse_glyph);
+      pixel_to_glyph_coords (*f, ix, iy, &ix, &iy, &last_mouse_glyph);
       XSET (*x, Lisp_Int, ix);
       XSET (*y, Lisp_Int, iy);
     }
@@ -1740,7 +1740,7 @@
   int mask;
   int items_pending;		/* How many items are in the X queue. */
   XEvent event;
-  struct screen *s;
+  struct frame *f;
   int event_found;
   int prefix;
   Lisp_Object part;
@@ -1792,9 +1792,9 @@
 	      {
 		if (event.xclient.data.l[0] == Xatom_wm_take_focus)
 		  {
-		    s = x_window_to_screen (event.xclient.window);
-		    if (s)
-		      x_focus_on_screen (s);
+		    f = x_window_to_frame (event.xclient.window);
+		    if (f)
+		      x_focus_on_frame (f);
 		    /* Not certain about handling scrollbars here */
 		  }
 		else if (event.xclient.data.l[0] == Xatom_wm_save_yourself)
@@ -1810,9 +1810,9 @@
 		  }
 		else if (event.xclient.data.l[0] == Xatom_wm_delete_window)
 		  {
-		    struct screen *s = x_window_to_screen (event.xclient.window);
-
-		    if (s)
+		    struct frame *f = x_window_to_frame (event.xclient.window);
+
+		    if (f)
 		      if (numchars > 0)
 			{
 			}
@@ -1825,8 +1825,8 @@
 	      {
 		int new_x, new_y;
 
-		new_x = event.xclient.data.s[0];
-		new_y = event.xclient.data.s[1];
+		new_x = event.xclient.data.f[0];
+		new_y = event.xclient.data.f[1];
 	      }
 	  }
 	  break;
@@ -1848,17 +1848,17 @@
 	  break;
 
 	case Expose:
-	  s = x_window_to_screen (event.xexpose.window);
-	  if (s)
+	  f = x_window_to_frame (event.xexpose.window);
+	  if (f)
 	    {
-	      if (s->visible == 0)
+	      if (f->visible == 0)
 		{
-		  s->visible = 1;
-		  s->iconified = 0;
-		  SET_SCREEN_GARBAGED (s);
+		  f->visible = 1;
+		  f->iconified = 0;
+		  SET_FRAME_GARBAGED (f);
 		}
 	      else
-		dumprectangle (x_window_to_screen (event.xexpose.window),
+		dumprectangle (x_window_to_frame (event.xexpose.window),
 			       event.xexpose.x, event.xexpose.y,
 			       event.xexpose.width, event.xexpose.height);
 	    }
@@ -1867,7 +1867,7 @@
 	case GraphicsExpose:	/* This occurs when an XCopyArea's
 				  source area was obscured or not
 				  available.*/
-	  dumprectangle (x_window_to_screen (event.xgraphicsexpose.drawable),
+	  dumprectangle (x_window_to_frame (event.xgraphicsexpose.drawable),
 			 event.xgraphicsexpose.x, event.xgraphicsexpose.y,
 			 event.xgraphicsexpose.width,
 			 event.xgraphicsexpose.height);
@@ -1881,32 +1881,32 @@
 	case ExposeWindow:
 	  if (event.subwindow != 0)
 	    break;		/* duplicate event */
-	  s = x_window_to_screen (event.window);
-	  if (event.window == s->display.x->icon_desc)
+	  f = x_window_to_frame (event.window);
+	  if (event.window == f->display.x->icon_desc)
 	    {
-	      refreshicon (s);
-	      s->iconified = 1;
+	      refreshicon (f);
+	      f->iconified = 1;
 	    }
-	  if (event.window == s->display.x->window_desc)
+	  if (event.window == f->display.x->window_desc)
 	    {
 	      /* Say must check all windows' needs_exposure flags.  */
 	      expose_all_windows = 1;
-	      s->display.x->needs_exposure = 1;
-	      s->visible = 1;
+	      f->display.x->needs_exposure = 1;
+	      f->visible = 1;
 	    }
 	  break;
 
 	case ExposeRegion:
 	  if (event.subwindow != 0)
 	    break;		/* duplicate event */
-	  s = x_window_to_screen (event.window);
-	  if (event.window == s->display.x->icon_desc)
+	  f = x_window_to_frame (event.window);
+	  if (event.window == f->display.x->icon_desc)
 	    {
-	      refreshicon (s);
+	      refreshicon (f);
 	      break;
 	    }
 	  /* If window already needs full redraw, ignore this rectangle.  */
-	  if (expose_all_windows && s->display.x->needs_exposure)
+	  if (expose_all_windows && f->display.x->needs_exposure)
 	    break;
 	  /* Put the event on the queue of rectangles to redraw.  */
 	  if (enqueue_event (&event, &x_expose_queue))
@@ -1915,7 +1915,7 @@
 	    {
 	      /* Say must check all windows' needs_exposure flags.  */
 	      expose_all_windows = 1;
-	      s->display.x->needs_exposure = 1;
+	      f->display.x->needs_exposure = 1;
 	    }
 	  break;
 
@@ -1930,29 +1930,29 @@
 	  {
 	    XWMHints *hints;
 
-	    s = x_window_to_screen (event.xunmap.window);
-	    if (s)		/* S may no longer exist if
-				   the screen was deleted.  */
+	    f = x_window_to_frame (event.xunmap.window);
+	    if (f)		/* F may no longer exist if
+				   the frame was deleted.  */
 	      {
-		/* While a screen is unmapped, display generation is
+		/* While a frame is unmapped, display generation is
 		   disabled; you don't want to spend time updating a
 		   display that won't ever be seen.  */
-		s->visible = 0;
+		f->visible = 0;
 		x_mouse_x = x_mouse_y = -1;
 	      }
 	  }
 	  break;
 
 	case MapNotify:
-	  s = x_window_to_screen (event.xmap.window);
-	  if (s)
+	  f = x_window_to_frame (event.xmap.window);
+	  if (f)
 	    {
-	      s->visible = 1;
-	      s->iconified = 0;
+	      f->visible = 1;
+	      f->iconified = 0;
 
 	      /* wait_reading_process_input will notice this and update
-		 the screen's display structures.  */
-	      SET_SCREEN_GARBAGED (s);
+		 the frame's display structures.  */
+	      SET_FRAME_GARBAGED (f);
 	    }
 	  break;
 
@@ -1962,18 +1962,18 @@
 
 #else
 	case UnmapWindow:
-	  s = x_window_to_screen (event.window);
-	  if (event.window == s->display.x->icon_desc)
-	    s->iconified = 0;
-	  if (event.window == s->display.x->window_desc)
-	    s->visible = 0;
+	  f = x_window_to_frame (event.window);
+	  if (event.window == f->display.x->icon_desc)
+	    f->iconified = 0;
+	  if (event.window == f->display.x->window_desc)
+	    f->visible = 0;
 	  break;
 #endif /* HAVE_X11 */
 
 #ifdef HAVE_X11
 	case KeyPress:
-	  s = x_window_to_screen (event.xkey.window);
-	  if (s != 0)
+	  f = x_window_to_frame (event.xkey.window);
+	  if (f != 0)
 	    {
 	      KeySym keysym;
 	      XComposeStatus status;
@@ -2008,7 +2008,7 @@
 		    {
 		      bufp->kind = non_ascii_keystroke;
 		      XSET (bufp->code, Lisp_Int, (unsigned) keysym - 0xff50);
-		      bufp->screen = s;
+		      bufp->frame = f;
 		      bufp->modifiers = x_convert_modifiers (modifiers);
 		      bufp->timestamp = event.xkey.time;
 		      bufp++;
@@ -2025,7 +2025,7 @@
 			    *copy_buffer |= METABIT;
 			  bufp->kind = ascii_keystroke;
 			  XSET (bufp->code, Lisp_Int, *copy_buffer);
-			  bufp->screen = s;
+			  bufp->frame = f;
 			  bufp->timestamp = event.xkey.time;
 			  bufp++;
 			}
@@ -2034,7 +2034,7 @@
 			  {
 			    bufp->kind = ascii_keystroke;
 			    XSET (bufp->code, Lisp_Int, copy_buffer[i]);
-			    bufp->screen = s;
+			    bufp->frame = f;
 			    bufp->timestamp = event.xkey.time;
 			    bufp++;
 			  }
@@ -2050,9 +2050,9 @@
 	  {
 	    register char *where_mapping;
 
-	    s = x_window_to_screen (event.window);
+	    f = x_window_to_frame (event.window);
 	    /* Ignore keys typed on icon windows.  */
-	    if (s != 0 && event.window == s->display.x->icon_desc)
+	    if (f != 0 && event.window == f->display.x->icon_desc)
 	      break;
 	    where_mapping = XLookupMapping (&event, &nbytes);
 	    /* Nasty fix for arrow keys */
@@ -2084,7 +2084,7 @@
 		    bufp->kind = ascii_keystroke;
 		    XSET (bufp->code, Lisp_Int, where_mapping[i]);
 		    XSET (bufp->time, Lisp_Int, event.xkey.time);
-		    bufp->screen = s;
+		    bufp->frame = f;
 		    bufp++;
 		  }
 		count += nbytes;
@@ -2096,7 +2096,7 @@
 
 #ifdef HAVE_X11
 	case EnterNotify:
-	  s = x_window_to_screen (event.xcrossing.window);
+	  f = x_window_to_frame (event.xcrossing.window);
 
 	  if (event.xcrossing.detail == NotifyInferior)	/* Left Scrollbar */
 	    ;
@@ -2108,19 +2108,19 @@
 	      emacs_event.kind = no_event;
 
 	      /* Avoid nasty pop/raise loops. */
-	      if (s && (!(s->auto_raise)
-			|| !(s->auto_lower)
+	      if (f && (!(f->auto_raise)
+			|| !(f->auto_lower)
 			|| (event.xcrossing.time - enter_timestamp) > 500))
 		{
-		  x_new_focus_screen (s);
+		  x_new_focus_frame (f);
 		  enter_timestamp = event.xcrossing.time;
 		}
 #if 0
-	      else if ((s = x_window_to_scrollbar (event.xcrossing.window,
+	      else if ((f = x_window_to_scrollbar (event.xcrossing.window,
 						   &part, &prefix)))
 		/* Fake a motion event */
 		notice_mouse_movement (&emacs_event,
-				       event.xmotion, s, scrollbar_window,
+				       event.xmotion, f, scrollbar_window,
 				       part);
 #endif
 
@@ -2136,19 +2136,19 @@
 		}
 #endif
 	    }
-	  else if (s == x_focus_screen)
-	    x_new_focus_screen (0);
+	  else if (f == x_focus_frame)
+	    x_new_focus_frame (0);
 #if 0
-	  else if (s = x_window_to_screen (event.xcrossing.window))
-	    x_mouse_screen = s;
+	  else if (f = x_window_to_frame (event.xcrossing.window))
+	    x_mouse_frame = f;
 #endif
 
 	  break;
 
 	case FocusIn:
-	  s = x_window_to_screen (event.xfocus.window);
-	  if (s)
-	    x_new_focus_screen (s);
+	  f = x_window_to_frame (event.xfocus.window);
+	  if (f)
+	    x_new_focus_frame (f);
 	  break;
 
 	case LeaveNotify:
@@ -2156,18 +2156,18 @@
 	      && event.xcrossing.subwindow == None
 	      && event.xcrossing.mode == NotifyNormal)
 	    {
-	      s = x_window_to_screen (event.xcrossing.window);
+	      f = x_window_to_frame (event.xcrossing.window);
 	      if (event.xcrossing.focus)
-		x_new_focus_screen (s);
-	      else if (s == x_focus_screen)
-		x_new_focus_screen (0);
+		x_new_focus_frame (f);
+	      else if (f == x_focus_frame)
+		x_new_focus_frame (0);
 	    }
 	  break;
 
 	case FocusOut:
-	  s = x_window_to_screen (event.xfocus.window);
-	  if (s && s == x_focus_screen)
-	    x_new_focus_screen (0);
+	  f = x_window_to_frame (event.xfocus.window);
+	  if (f && f == x_focus_frame)
+	    x_new_focus_frame (0);
 	  break;
 
 #else /* not HAVE_X11 */
@@ -2179,12 +2179,10 @@
 	    break;		/* Entering our own subwindow.  */
 
 	  {
-	    struct screen *old_s = x_input_screen;
-
-	    s = x_window_to_screen (event.window);
-	    x_mouse_screen = s;
-
-	    x_new_focus_screen (s);
+	    f = x_window_to_frame (event.window);
+	    x_mouse_frame = f;
+
+	    x_new_focus_frame (f);
 	  }
 	  break;
 
@@ -2194,16 +2192,16 @@
 	  if (event.subwindow != 0)
 	    break;		/* Leaving our own subwindow.  */
 
-	  x_mouse_screen = 0;
-	  if (x_focus_screen == 0
-	      && x_input_screen != 0
-	      && x_input_screen == x_window_to_screen (event.window)
-	      && event.window == x_input_screen->display.x->window_desc)
+	  x_mouse_frame = 0;
+	  if (x_focus_frame == 0
+	      && x_input_frame != 0
+	      && x_input_frame == x_window_to_frame (event.window)
+	      && event.window == x_input_frame->display.x->window_desc)
 	    {
-	      s = x_input_screen;
-	      x_input_screen = 0;
-	      if (s)
-		screen_unhighlight (s);
+	      f = x_input_frame;
+	      x_input_frame = 0;
+	      if (f)
+		frame_unhighlight (f);
 	    }
 	  break;
 #endif /* not HAVE_X11 */
@@ -2211,11 +2209,11 @@
 #ifdef HAVE_X11
 	case MotionNotify:
 	  {
-	    s = x_window_to_screen (event.xmotion.window);
-	    if (s)
-	      note_mouse_position (s, &event.xmotion);
+	    f = x_window_to_frame (event.xmotion.window);
+	    if (f)
+	      note_mouse_position (f, &event.xmotion);
 #if 0
-	    else if ((s = x_window_to_scrollbar (event.xmotion.window,
+	    else if ((f = x_window_to_scrollbar (event.xmotion.window,
 						 &part, &prefix)))
 	      {
 		What should go here?
@@ -2227,36 +2225,36 @@
 	case ConfigureNotify:
 	  {
 	    int rows, columns;
-	    s = x_window_to_screen (event.xconfigure.window);
-	    if (!s)
+	    f = x_window_to_frame (event.xconfigure.window);
+	    if (!f)
 	      break;
 
 	    columns = ((event.xconfigure.width -
-			(2 * s->display.x->internal_border_width)
-			- s->display.x->v_scrollbar_width)
-		       / FONT_WIDTH (s->display.x->font));
+			(2 * f->display.x->internal_border_width)
+			- f->display.x->v_scrollbar_width)
+		       / FONT_WIDTH (f->display.x->font));
 	    rows = ((event.xconfigure.height -
-		     (2 * s->display.x->internal_border_width)
-		     - s->display.x->h_scrollbar_height)
-		    / FONT_HEIGHT (s->display.x->font));
+		     (2 * f->display.x->internal_border_width)
+		     - f->display.x->h_scrollbar_height)
+		    / FONT_HEIGHT (f->display.x->font));
 
 	    /* Even if the number of character rows and columns has
 	       not changed, the font size may have changed, so we need
 	       to check the pixel dimensions as well.  */
-	    if (columns != s->width
-		|| rows != s->height
-		|| event.xconfigure.width != s->display.x->pixel_width
-		|| event.xconfigure.height != s->display.x->pixel_height)
+	    if (columns != f->width
+		|| rows != f->height
+		|| event.xconfigure.width != f->display.x->pixel_width
+		|| event.xconfigure.height != f->display.x->pixel_height)
 	      {
-		change_screen_size (s, rows, columns, 0);
-		x_resize_scrollbars (s);
-		SET_SCREEN_GARBAGED (s);
+		change_frame_size (f, rows, columns, 0);
+		x_resize_scrollbars (f);
+		SET_FRAME_GARBAGED (f);
 	      }
 
-	    s->display.x->pixel_width = event.xconfigure.width;
-	    s->display.x->pixel_height = event.xconfigure.height;
-	    s->display.x->left_pos = event.xconfigure.x;
-	    s->display.x->top_pos = event.xconfigure.y;
+	    f->display.x->pixel_width = event.xconfigure.width;
+	    f->display.x->pixel_height = event.xconfigure.height;
+	    f->display.x->left_pos = event.xconfigure.x;
+	    f->display.x->top_pos = event.xconfigure.y;
 	    break;
 	  }
 
@@ -2268,20 +2266,20 @@
 	    struct input_event emacs_event;
 	    emacs_event.kind = no_event;
 
-	    s = x_window_to_screen (event.xbutton.window);
-	    if (s)
-	      if (!x_focus_screen || (s == x_focus_screen))
+	    f = x_window_to_frame (event.xbutton.window);
+	    if (f)
+	      if (!x_focus_frame || (f == x_focus_frame))
 		construct_mouse_click (&emacs_event,
-				       &event, s, 0, 0);
+				       &event, f, 0, 0);
 	      else
 		continue;
 	    else
-	      if ((s = x_window_to_scrollbar (event.xbutton.window,
+	      if ((f = x_window_to_scrollbar (event.xbutton.window,
 					      &part, &prefix)))
 		{
-		  if (!x_focus_screen || (selected_screen == x_focus_screen))
+		  if (!x_focus_frame || (selected_frame == x_focus_frame))
 		    construct_mouse_click (&emacs_event,
-					   &event, s, part, prefix);
+					   &event, f, part, prefix);
 		  else
 		    continue;
 		}
@@ -2299,21 +2297,21 @@
 #else /* not HAVE_X11 */
 	case ButtonPressed:
 	case ButtonReleased:
-	  s = x_window_to_screen (event.window);
-	  if (s)
+	  f = x_window_to_frame (event.window);
+	  if (f)
 	    {
-	      if (event.window == s->display.x->icon_desc)
+	      if (event.window == f->display.x->icon_desc)
 		{
-		  x_make_screen_visible (s);
+		  x_make_frame_visible (f);
 
 		  if (warp_mouse_on_deiconify)
-		    XWarpMouse (s->display.x->window_desc, 10, 10);
+		    XWarpMouse (f->display.x->window_desc, 10, 10);
 		  break;
 		}
-	      if (event.window == s->display.x->window_desc)
+	      if (event.window == f->display.x->window_desc)
 		{
-		  if (s->auto_raise)
-		    x_raise_screen (s);
+		  if (f->auto_raise)
+		    x_raise_frame (f);
 		}
 	    }
 	  enqueue_event (&event, &x_mouse_queue);
@@ -2321,13 +2319,13 @@
 	    {
 	      bufp->kind = ascii_keystroke;
 	      bufp->code = (char) 'X' & 037; /* C-x */
-	      bufp->screen = s;
+	      bufp->frame = f;
 	      XSET (bufp->time, Lisp_Int, event.xkey.time);
 	      bufp++;
 
 	      bufp->kind = ascii_keystroke;
 	      bufp->code = (char) 0; /* C-@ */
-	      bufp->screen = s;
+	      bufp->frame = f;
 	      XSET (bufp->time, Lisp_Int, event.xkey.time);
 	      bufp++;
 
@@ -2377,7 +2375,7 @@
 #endif /* HAVE_SELECT */
 #endif
 
-  if (updating_screen == 0)
+  if (updating_frame == 0)
     x_do_pending_expose ();
 
   UNBLOCK_INPUT;
@@ -2393,7 +2391,7 @@
 static void
 x_read_exposes ()
 {
-  struct screen *s;
+  struct frame *f;
   XKeyPressedEvent event;
 
   while (1)
@@ -2405,16 +2403,16 @@
 	case ExposeWindow:
 	  if (event.subwindow != 0)
 	    break;			/* duplicate event */
-	  s = x_window_to_screen (event.window);
-	  if (event.window == s->display.x->icon_desc)
+	  f = x_window_to_frame (event.window);
+	  if (event.window == f->display.x->icon_desc)
 	    {
-	      refreshicon (s);
+	      refreshicon (f);
 	      break;
 	    }
-	  if (event.window == s->display.x->window_desc)
+	  if (event.window == f->display.x->window_desc)
 	    {
 	      expose_all_windows = 1;
-	      s->display.x->needs_exposure = 1;
+	      f->display.x->needs_exposure = 1;
 	      break;
 	    }
 	  break;
@@ -2422,14 +2420,14 @@
 	case ExposeRegion:
 	  if (event.subwindow != 0)
 	    break;			/* duplicate event */
-	  s = x_window_to_screen (event.window);
-	  if (event.window == s->display.x->icon_desc)
+	  f = x_window_to_frame (event.window);
+	  if (event.window == f->display.x->icon_desc)
 	    {
-	      refreshicon (s);
+	      refreshicon (f);
 	      break;
 	    }
 	  /* If window already needs full redraw, ignore this rectangle.  */
-	  if (expose_all_windows && s->display.x->needs_exposure)
+	  if (expose_all_windows && f->display.x->needs_exposure)
 	    break;
 	  /* Put the event on the queue of rectangles to redraw.  */
 	  if (enqueue_event (&event, &x_expose_queue))
@@ -2438,7 +2436,7 @@
 	    {
 	      /* Say must check all windows' needs_exposure flags.  */
 	      expose_all_windows = 1;
-	      s->display.x->needs_exposure = 1;
+	      f->display.x->needs_exposure = 1;
 	    }
 	  break;
 
@@ -2453,118 +2451,118 @@
 /* Draw a hollow box cursor.  Don't change the inside of the box.  */
 
 static void
-x_draw_box (s)
-     struct screen *s;
+x_draw_box (f)
+     struct frame *f;
 {
-  int left = s->cursor_x * FONT_WIDTH (s->display.x->font)
-    + s->display.x->internal_border_width;
-  int top = s->cursor_y * FONT_HEIGHT (s->display.x->font)
-    + s->display.x->internal_border_width;
-  int width = FONT_WIDTH (s->display.x->font);
-  int height = FONT_HEIGHT (s->display.x->font);
+  int left = f->cursor_x * FONT_WIDTH (f->display.x->font)
+    + f->display.x->internal_border_width;
+  int top = f->cursor_y * FONT_HEIGHT (f->display.x->font)
+    + f->display.x->internal_border_width;
+  int width = FONT_WIDTH (f->display.x->font);
+  int height = FONT_HEIGHT (f->display.x->font);
 
 #ifdef HAVE_X11
   /* Perhaps we should subtract 1 from width and height... */
-  XDrawRectangle (x_current_display, s->display.x->window_desc,
-		  s->display.x->cursor_gc,
+  XDrawRectangle (x_current_display, f->display.x->window_desc,
+		  f->display.x->cursor_gc,
 		  left, top, width - 1, height - 1);
 #else
-  XPixSet (s->display.x->window_desc,
+  XPixSet (f->display.x->window_desc,
 	   left, top, width, 1,
-	   s->display.x->cursor_pixel);
-
-  XPixSet (s->display.x->window_desc,
+	   f->display.x->cursor_pixel);
+
+  XPixSet (f->display.x->window_desc,
 	   left, top, 1, height,
-	   s->display.x->cursor_pixel);
-
-  XPixSet (s->display.x->window_desc,
+	   f->display.x->cursor_pixel);
+
+  XPixSet (f->display.x->window_desc,
 	   left+width-1, top, 1, height,
-	   s->display.x->cursor_pixel);
-
-  XPixSet (s->display.x->window_desc,
+	   f->display.x->cursor_pixel);
+
+  XPixSet (f->display.x->window_desc,
 	   left, top+height-1, width, 1,
-	   s->display.x->cursor_pixel);
+	   f->display.x->cursor_pixel);
 #endif /* HAVE_X11 */
 }
 
-/* Clear the cursor of screen S to background color,
+/* Clear the cursor of frame F to background color,
    and mark the cursor as not shown.
    This is used when the text where the cursor is
    is about to be rewritten.  */
 
 static void
-clear_cursor (s)
-     struct screen *s;
+clear_cursor (f)
+     struct frame *f;
 {
   int mask;
 
-  if (! s->visible
-      || s->phys_cursor_x < 0)
+  if (! f->visible
+      || f->phys_cursor_x < 0)
     return;
 
 #ifdef HAVE_X11
-  x_display_cursor (s, 0);
+  x_display_cursor (f, 0);
 #if 0
-  XClearArea (x_current_display, s->display.x->window_desc,
-	      s->phys_cursor_x * FONT_WIDTH (s->display.x->font)
-	      + s->display.x->internal_border_width,
-	      s->phys_cursor_y * FONT_HEIGHT (s->display.x->font)
-	      + s->display.x->internal_border_width,
-	      FONT_WIDTH (s->display.x->font) + 1, FONT_HEIGHT (s->display.x->font) + 1, False);
+  XClearArea (x_current_display, f->display.x->window_desc,
+	      f->phys_cursor_x * FONT_WIDTH (f->display.x->font)
+	      + f->display.x->internal_border_width,
+	      f->phys_cursor_y * FONT_HEIGHT (f->display.x->font)
+	      + f->display.x->internal_border_width,
+	      FONT_WIDTH (f->display.x->font) + 1, FONT_HEIGHT (f->display.x->font) + 1, False);
 #endif
 #else
-  XPixSet (s->display.x->window_desc,
-	   s->phys_cursor_x * FONT_WIDTH (s->display.x->font) + s->display.x->internal_border_width,
-	   s->phys_cursor_y * FONT_HEIGHT (s->display.x->font) + s->display.x->internal_border_width,
-	   FONT_WIDTH (s->display.x->font), FONT_HEIGHT (s->display.x->font),
-	   s->display.x->background_pixel);
+  XPixSet (f->display.x->window_desc,
+	   f->phys_cursor_x * FONT_WIDTH (f->display.x->font) + f->display.x->internal_border_width,
+	   f->phys_cursor_y * FONT_HEIGHT (f->display.x->font) + f->display.x->internal_border_width,
+	   FONT_WIDTH (f->display.x->font), FONT_HEIGHT (f->display.x->font),
+	   f->display.x->background_pixel);
 #endif /* HAVE_X11 */
-  s->phys_cursor_x = -1;
+  f->phys_cursor_x = -1;
 }
 
 static void
-x_display_bar_cursor (s, on)
-     struct screen *s;
+x_display_bar_cursor (f, on)
+     struct frame *f;
      int on;
 {
-  register int phys_x = s->phys_cursor_x;
-  register int phys_y = s->phys_cursor_y;
+  register int phys_x = f->phys_cursor_x;
+  register int phys_y = f->phys_cursor_y;
   register int x1;
   register int y1;
   register int y2;
 
-  if (! s->visible || (! on && s->phys_cursor_x < 0))
+  if (! f->visible || (! on && f->phys_cursor_x < 0))
     return;
 
 #ifdef HAVE_X11
   if (phys_x >= 0 &&
-      (!on || phys_x != s->cursor_x || phys_y != s->cursor_y))
+      (!on || phys_x != f->cursor_x || phys_y != f->cursor_y))
     {
-      x1 = phys_x * FONT_WIDTH (s->display.x->font)
-	+ s->display.x->internal_border_width;
-      y1 = phys_y * FONT_HEIGHT (s->display.x->font)
-	+ s->display.x->internal_border_width - 1;
-      y2 = y1 + FONT_HEIGHT (s->display.x->font) + 1;
-
-      XDrawLine (x_current_display, s->display.x->window_desc,
-		 s->display.x->reverse_gc, x1, y1, x1, y2);
-
-      s->phys_cursor_x = phys_x = -1;
+      x1 = phys_x * FONT_WIDTH (f->display.x->font)
+	+ f->display.x->internal_border_width;
+      y1 = phys_y * FONT_HEIGHT (f->display.x->font)
+	+ f->display.x->internal_border_width - 1;
+      y2 = y1 + FONT_HEIGHT (f->display.x->font) + 1;
+
+      XDrawLine (x_current_display, f->display.x->window_desc,
+		 f->display.x->reverse_gc, x1, y1, x1, y2);
+
+      f->phys_cursor_x = phys_x = -1;
     }
 
-  if (on && s == x_highlight_screen)
+  if (on && f == x_highlight_frame)
     {
-      x1 = s->cursor_x * FONT_WIDTH (s->display.x->font)
-	+ s->display.x->internal_border_width;
-      y1 = s->cursor_y * FONT_HEIGHT (s->display.x->font)
-	+ s->display.x->internal_border_width - 1;
-      y2 = y1 + FONT_HEIGHT (s->display.x->font) + 1;
-
-      XDrawLine (x_current_display, s->display.x->window_desc,
-		 s->display.x->cursor_gc, x1, y1, x1, y2);
-
-      s->phys_cursor_x = s->cursor_x;
-      s->phys_cursor_y = s->cursor_y;
+      x1 = f->cursor_x * FONT_WIDTH (f->display.x->font)
+	+ f->display.x->internal_border_width;
+      y1 = f->cursor_y * FONT_HEIGHT (f->display.x->font)
+	+ f->display.x->internal_border_width - 1;
+      y2 = y1 + FONT_HEIGHT (f->display.x->font) + 1;
+
+      XDrawLine (x_current_display, f->display.x->window_desc,
+		 f->display.x->cursor_gc, x1, y1, x1, y2);
+
+      f->phys_cursor_x = f->cursor_x;
+      f->phys_cursor_y = f->cursor_y;
     }
 #else  /* X10 */
   Give it up, dude.
@@ -2572,149 +2570,149 @@
 }
 
 
-/* Redraw the glyph at ROW, COLUMN on screen S, in the style
+/* Redraw the glyph at ROW, COLUMN on frame F, in the style
    HIGHLIGHT.  HIGHLIGHT is as defined for dumpglyphs.  Return the
    glyph drawn.  */
 
 static void
-x_draw_single_glyph (s, row, column, glyph, highlight)
-     struct screen *s;
+x_draw_single_glyph (f, row, column, glyph, highlight)
+     struct frame *f;
      int row, column;
      GLYPH glyph;
      int highlight;
 {
-  dumpglyphs (s,
-	      (column * FONT_WIDTH (s->display.x->font)
-	       + s->display.x->internal_border_width),
-	      (row * FONT_HEIGHT (s->display.x->font)
-	       + s->display.x->internal_border_width),
-	      &glyph, 1, highlight, s->display.x->font);
+  dumpglyphs (f,
+	      (column * FONT_WIDTH (f->display.x->font)
+	       + f->display.x->internal_border_width),
+	      (row * FONT_HEIGHT (f->display.x->font)
+	       + f->display.x->internal_border_width),
+	      &glyph, 1, highlight, f->display.x->font);
 }
 
-/* Turn the displayed cursor of screen S on or off according to ON.
+/* Turn the displayed cursor of frame F on or off according to ON.
    If ON is nonzero, where to put the cursor is specified
-   by S->cursor_x and S->cursor_y.  */
+   by F->cursor_x and F->cursor_y.  */
 
 static void
-x_display_box_cursor (s, on)
-     struct screen *s;
+x_display_box_cursor (f, on)
+     struct frame *f;
      int on;
 {
-  struct screen_glyphs *current_glyphs = SCREEN_CURRENT_GLYPHS (s);
-
-  /* If we're not updating, then we want to use the current screen's
+  struct frame_glyphs *current_glyphs = FRAME_CURRENT_GLYPHS (f);
+
+  /* If we're not updating, then we want to use the current frame's
      cursor position, not our local idea of where the cursor ought to be.  */
-  if (s != updating_screen)
+  if (f != updating_frame)
     {
-      curs_x = SCREEN_CURSOR_X (s);
-      curs_y = SCREEN_CURSOR_Y (s);
+      curs_x = FRAME_CURSOR_X (f);
+      curs_y = FRAME_CURSOR_Y (f);
     }
 
-  if (! s->visible)
+  if (! f->visible)
     return;
 
   /* If cursor is off and we want it off, return quickly.  */
-  if (!on && s->phys_cursor_x < 0)
+  if (!on && f->phys_cursor_x < 0)
     return;
 
   /* If cursor is currently being shown and we don't want it to be
      or it is in the wrong place,
      or we want a hollow box and it's not so, (pout!)
      erase it.  */
-  if (s->phys_cursor_x >= 0
+  if (f->phys_cursor_x >= 0
       && (!on
-	  || s->phys_cursor_x != curs_x
-	  || s->phys_cursor_y != curs_y
-	  || (s->display.x->text_cursor_kind != hollow_box_cursor
-	      && (s != x_highlight_screen))))
+	  || f->phys_cursor_x != curs_x
+	  || f->phys_cursor_y != curs_y
+	  || (f->display.x->text_cursor_kind != hollow_box_cursor
+	      && (f != x_highlight_frame))))
     {
       /* Erase the cursor by redrawing the character underneath it.  */
-      x_draw_single_glyph (s, s->phys_cursor_y, s->phys_cursor_x,
-			   s->phys_cursor_glyph,
-			   current_glyphs->highlight[s->phys_cursor_y]);
-      s->phys_cursor_x = -1;
+      x_draw_single_glyph (f, f->phys_cursor_y, f->phys_cursor_x,
+			   f->phys_cursor_glyph,
+			   current_glyphs->highlight[f->phys_cursor_y]);
+      f->phys_cursor_x = -1;
     }
 
   /* If we want to show a cursor,
      or we want a box cursor and it's not so,
      write it in the right place.  */
   if (on
-      && (s->phys_cursor_x < 0
-	  || (s->display.x->text_cursor_kind != filled_box_cursor
-	      && s == x_highlight_screen)))
+      && (f->phys_cursor_x < 0
+	  || (f->display.x->text_cursor_kind != filled_box_cursor
+	      && f == x_highlight_frame)))
     {
-      s->phys_cursor_glyph
+      f->phys_cursor_glyph
 	= ((current_glyphs->enable[curs_y]
 	    && curs_x < current_glyphs->used[curs_y])
 	   ? current_glyphs->glyphs[curs_y][curs_x]
 	   : SPACEGLYPH);
-      if (s != x_highlight_screen)
+      if (f != x_highlight_frame)
 	{
-	  x_draw_box (s);
-	  s->display.x->text_cursor_kind = hollow_box_cursor;
+	  x_draw_box (f);
+	  f->display.x->text_cursor_kind = hollow_box_cursor;
 	}
       else
 	{
-	  x_draw_single_glyph (s, curs_y, curs_x,
-			       s->phys_cursor_glyph, 2);
-	  s->display.x->text_cursor_kind = filled_box_cursor;
+	  x_draw_single_glyph (f, curs_y, curs_x,
+			       f->phys_cursor_glyph, 2);
+	  f->display.x->text_cursor_kind = filled_box_cursor;
 	}
 
-      s->phys_cursor_x = curs_x;
-      s->phys_cursor_y = curs_y;
+      f->phys_cursor_x = curs_x;
+      f->phys_cursor_y = curs_y;
     }
 
-  if (updating_screen != s)
+  if (updating_frame != f)
     XFlushQueue ();
 }
 
 extern Lisp_Object Vbar_cursor;
 
-x_display_cursor (s, on)
-     struct screen *s;
+x_display_cursor (f, on)
+     struct frame *f;
      int on;
 {
   if (EQ (Vbar_cursor, Qnil))
-    x_display_box_cursor (s, on);
+    x_display_box_cursor (f, on);
   else
-    x_display_bar_cursor (s, on);
+    x_display_bar_cursor (f, on);
 }
 
 /* Icons.  */
 
-/* Refresh bitmap kitchen sink icon for screen S
+/* Refresh bitmap kitchen sink icon for frame F
    when we get an expose event for it. */
 
-refreshicon (s)
-     struct screen *s;
+refreshicon (f)
+     struct frame *f;
 {
 #ifdef HAVE_X11
   /* Normally, the window manager handles this function. */
 #else
   int mask;
 
-  if (s->display.x->icon_bitmap_flag)
-    XBitmapBitsPut (s->display.x->icon_desc, 0,  0, sink_width, sink_height,
+  if (f->display.x->icon_bitmap_flag)
+    XBitmapBitsPut (f->display.x->icon_desc, 0,  0, sink_width, sink_height,
 		    sink_bits, BlackPixel, WHITE_PIX_DEFAULT, 
 		    icon_bitmap, GXcopy, AllPlanes);
   else
     {
-      extern struct screen *selected_screen;
+      extern struct frame *selected_frame;
       struct Lisp_String *str;
       unsigned char *string;
 
       string
-	= XSTRING (XBUFFER (XWINDOW (s->selected_window)->buffer)->name)->data;
-
-      if (s->display.x->icon_label != string)
+	= XSTRING (XBUFFER (XWINDOW (f->selected_window)->buffer)->name)->data;
+
+      if (f->display.x->icon_label != string)
 	{
-	  s->display.x->icon_label = string;
-	  XChangeWindow (s->display.x->icon_desc,
+	  f->display.x->icon_label = string;
+	  XChangeWindow (f->display.x->icon_desc,
 			 XQueryWidth (string, icon_font_info->id) + 10,
 			 icon_font_info->height + 10);
 	}
 
-      XText (s->display.x->icon_desc, 5, 5, string,
+      XText (f->display.x->icon_desc, 5, 5, string,
 	     str->size, icon_font_info->id,
 	     BLACK_PIX_DEFAULT, WHITE_PIX_DEFAULT);
     }
@@ -2722,17 +2720,17 @@
 #endif /* HAVE_X11 */
 }
 
-/* Make the x-window of screen S use the kitchen-sink icon
+/* Make the x-window of frame F use the kitchen-sink icon
    that's a window generated by Emacs.  */
 
 int
-x_bitmap_icon (s)
-     struct screen *s;
+x_bitmap_icon (f)
+     struct frame *f;
 {
   int mask;
   Window icon_window;
 
-  if (s->display.x->window_desc == 0)
+  if (f->display.x->window_desc == 0)
     return 1;
 
 #ifdef HAVE_X11
@@ -2740,29 +2738,29 @@
     XFreePixmap (x_current_display, icon_bitmap);
   
   icon_bitmap =
-    XCreateBitmapFromData (x_current_display, s->display.x->window_desc,
+    XCreateBitmapFromData (x_current_display, f->display.x->window_desc,
 			   gnu_bits, gnu_width, gnu_height);
-  x_wm_set_icon_pixmap (s, icon_bitmap);
-  s->display.x->icon_bitmap_flag = 1;
+  x_wm_set_icon_pixmap (f, icon_bitmap);
+  f->display.x->icon_bitmap_flag = 1;
 #else
-  if (s->display.x->icon_desc)
+  if (f->display.x->icon_desc)
     {
-      XClearIconWindow (s->display.x->window_desc);
-      XDestroyWindow (s->display.x->icon_desc);
+      XClearIconWindow (f->display.x->window_desc);
+      XDestroyWindow (f->display.x->icon_desc);
     }
 
-  icon_window = XCreateWindow (s->display.x->parent_desc,
+  icon_window = XCreateWindow (f->display.x->parent_desc,
 			       0, 0, sink_width, sink_height,
 			       2, WhitePixmap, (Pixmap) NULL);
 
   if (icon_window == 0)
     return 1;
 
-  XSetIconWindow (s->display.x->window_desc, icon_window);
+  XSetIconWindow (f->display.x->window_desc, icon_window);
   XSelectInput (icon_window, ExposeWindow | UnmapWindow);
 
-  s->display.x->icon_desc = icon_window;
-  s->display.x->icon_bitmap_flag = 1;
+  f->display.x->icon_desc = icon_window;
+  f->display.x->icon_bitmap_flag = 1;
 
   if (icon_bitmap == 0)
     icon_bitmap
@@ -2773,11 +2771,11 @@
 }
 
 
-/* Make the x-window of screen S use a rectangle with text.  */
+/* Make the x-window of frame F use a rectangle with text.  */
 
 int
-x_text_icon (s, icon_name)
-     struct screen *s;
+x_text_icon (f, icon_name)
+     struct frame *f;
      char *icon_name;
 {
 #ifndef HAVE_X11
@@ -2796,7 +2794,7 @@
 #endif
 #endif /* not HAVE_X11 */
   
-  if (s->display.x->window_desc == 0)
+  if (f->display.x->window_desc == 0)
     return 1;
 
   if (icon_font_info == 0)
@@ -2807,44 +2805,44 @@
 
 #ifdef HAVE_X11
   if (icon_name)
-    s->display.x->icon_label = icon_name;
+    f->display.x->icon_label = icon_name;
   else
-    if (! s->display.x->icon_label)
-      s->display.x->icon_label = " *emacs* ";
+    if (! f->display.x->icon_label)
+      f->display.x->icon_label = " *emacs* ";
   
-  XSetIconName (x_current_display, s->display.x->window_desc,
-		(char *) s->display.x->icon_label);
+  XSetIconName (x_current_display, f->display.x->window_desc,
+		(char *) f->display.x->icon_label);
   
-  s->display.x->icon_bitmap_flag = 0;
+  f->display.x->icon_bitmap_flag = 0;
 #else
-  if (s->display.x->icon_desc)
+  if (f->display.x->icon_desc)
     {
-      XClearIconWindow (XDISPLAY s->display.x->window_desc);
-      XDestroyWindow (XDISPLAY s->display.x->icon_desc);
+      XClearIconWindow (XDISPLAY f->display.x->window_desc);
+      XDestroyWindow (XDISPLAY f->display.x->icon_desc);
     }
 
   if (icon_name)
-    s->display.x->icon_label = (unsigned char *) icon_name;
+    f->display.x->icon_label = (unsigned char *) icon_name;
   else
-    if (! s->display.x->icon_label)
-      s->display.x->icon_label = XSTRING (s->name)->data;
-
-  width = XStringWidth (s->display.x->icon_label, icon_font_info, 0, 0);
-  icon_window = XCreateWindow (s->display.x->parent_desc,
-			       s->display.x->left_pos,
-			       s->display.x->top_pos,
+    if (! f->display.x->icon_label)
+      f->display.x->icon_label = XSTRING (f->name)->data;
+
+  width = XStringWidth (f->display.x->icon_label, icon_font_info, 0, 0);
+  icon_window = XCreateWindow (f->display.x->parent_desc,
+			       f->display.x->left_pos,
+			       f->display.x->top_pos,
 			       width + 10, icon_font_info->height + 10,
 			       2, BlackPixmap, WhitePixmap);
 
   if (icon_window == 0)
     return 1;
 
-  XSetIconWindow (s->display.x->window_desc, icon_window);
+  XSetIconWindow (f->display.x->window_desc, icon_window);
   XSelectInput (icon_window, ExposeWindow | ExposeRegion | UnmapWindow | ButtonPressed);
 
-  s->display.x->icon_desc = icon_window;
-  s->display.x->icon_bitmap_flag = 0;
-  s->display.x->icon_label = 0;
+  f->display.x->icon_desc = icon_window;
+  f->display.x->icon_bitmap_flag = 0;
+  f->display.x->icon_label = 0;
 #endif /* HAVE_X11 */
 
   return 0;
@@ -3061,9 +3059,9 @@
 #endif
 
 
-/* Set the font of the x-window specified by screen S
+/* Set the font of the x-window specified by frame F
    to the font named NEWNAME.  This is safe to use
-   even before S has an actual x-window.  */
+   even before F has an actual x-window.  */
 
 #ifdef HAVE_X11
 
@@ -3078,8 +3076,8 @@
    0 <= n_fonts <= x_font_table_size.  */
 static int n_fonts;
 
-x_new_font (s, fontname)
-     struct screen *s;
+x_new_font (f, fontname)
+     struct frame *f;
      register char *fontname;
 {
   XFontStruct *temp;
@@ -3116,7 +3114,7 @@
   
   /* If we have, just return it from the table.  */
   if (already_loaded)
-    s->display.x->font = x_font_table[already_loaded];
+    f->display.x->font = x_font_table[already_loaded];
   
   /* Otherwise, load the font and add it to the table.  */
   else
@@ -3145,31 +3143,31 @@
 					  * sizeof (x_font_table[0])));
 	}
 
-      s->display.x->font = x_font_table[n_fonts++] = font;
+      f->display.x->font = x_font_table[n_fonts++] = font;
     }
   
   /* Free the information from XListFontsWithInfo.  The data
      we actually retain comes from XLoadQueryFont.  */
   XFreeFontInfo (font_names, font_info, n_matching_fonts);
 
-  /* Now make the screen display the given font.  */
-  if (s->display.x->window_desc != 0)
+  /* Now make the frame display the given font.  */
+  if (f->display.x->window_desc != 0)
     {
-      XSetFont (x_current_display, s->display.x->normal_gc,
-		s->display.x->font->fid);
-      XSetFont (x_current_display, s->display.x->reverse_gc,
-		s->display.x->font->fid);
-      XSetFont (x_current_display, s->display.x->cursor_gc,
-		s->display.x->font->fid);
-
-      x_set_window_size (s, s->width, s->height);
+      XSetFont (x_current_display, f->display.x->normal_gc,
+		f->display.x->font->fid);
+      XSetFont (x_current_display, f->display.x->reverse_gc,
+		f->display.x->font->fid);
+      XSetFont (x_current_display, f->display.x->cursor_gc,
+		f->display.x->font->fid);
+
+      x_set_window_size (f, f->width, f->height);
     }
 
   return 0;
 }
 #else
-x_new_font (s, newname)
-     struct screen *s;
+x_new_font (f, newname)
+     struct frame *f;
      register char *newname;
 {
   FONT_TYPE *temp;
@@ -3179,154 +3177,154 @@
   if (temp == (FONT_TYPE *) 0)
     return 1;
 
-  if (s->display.x->font)
-    XLoseFont (s->display.x->font);
-
-  s->display.x->font = temp;
-
-  if (s->display.x->window_desc != 0)
-    x_set_window_size (s, s->width, s->height);
+  if (f->display.x->font)
+    XLoseFont (f->display.x->font);
+
+  f->display.x->font = temp;
+
+  if (f->display.x->window_desc != 0)
+    x_set_window_size (f, f->width, f->height);
 
   return 0;
 }
 #endif
 
-x_calc_absolute_position (s)
-     struct screen *s;
+x_calc_absolute_position (f)
+     struct frame *f;
 {
 #ifdef HAVE_X11
-  if (s->display.x->left_pos < 0)
-    s->display.x->left_pos
-      = XINT (x_screen_width) - PIXEL_WIDTH (s) + s->display.x->left_pos;
-
-  if (s->display.x->top_pos < 0)
-    s->display.x->top_pos
-      = XINT (x_screen_height) - PIXEL_HEIGHT (s) + s->display.x->top_pos;
+  if (f->display.x->left_pos < 0)
+    f->display.x->left_pos
+      = XINT (x_frame_width) - PIXEL_WIDTH (f) + f->display.x->left_pos;
+
+  if (f->display.x->top_pos < 0)
+    f->display.x->top_pos
+      = XINT (x_frame_height) - PIXEL_HEIGHT (f) + f->display.x->top_pos;
 #else /* X10 */
   WINDOWINFO_TYPE parentinfo;
 
-  XGetWindowInfo (s->display.x->window_desc, &parentinfo);
-
-  if (s->display.x->left_pos < 0)
-    s->display.x->left_pos = parentinfo.width + (s->display.x->left_pos + 1)
-      - PIXEL_WIDTH (s) - 2 * s->display.x->internal_border_width;
-
-  if (s->display.x->top_pos < 0)
-    s->display.x->top_pos = parentinfo.height + (s->display.x->top_pos + 1)
-      - PIXEL_HEIGHT (s) - 2 * s->display.x->internal_border_width;
+  XGetWindowInfo (f->display.x->window_desc, &parentinfo);
+
+  if (f->display.x->left_pos < 0)
+    f->display.x->left_pos = parentinfo.width + (f->display.x->left_pos + 1)
+      - PIXEL_WIDTH (f) - 2 * f->display.x->internal_border_width;
+
+  if (f->display.x->top_pos < 0)
+    f->display.x->top_pos = parentinfo.height + (f->display.x->top_pos + 1)
+      - PIXEL_HEIGHT (f) - 2 * f->display.x->internal_border_width;
 #endif /* X10 */
 }
 
-x_set_offset (s, xoff, yoff)
-     struct screen *s;
+x_set_offset (f, xoff, yoff)
+     struct frame *f;
      register int xoff, yoff;
 {
-  s->display.x->top_pos = yoff;
-  s->display.x->left_pos = xoff;
-  x_calc_absolute_position (s);
+  f->display.x->top_pos = yoff;
+  f->display.x->left_pos = xoff;
+  x_calc_absolute_position (f);
 
   BLOCK_INPUT;
-  XMoveWindow (XDISPLAY s->display.x->window_desc,
-	       s->display.x->left_pos, s->display.x->top_pos);
+  XMoveWindow (XDISPLAY f->display.x->window_desc,
+	       f->display.x->left_pos, f->display.x->top_pos);
 #ifdef HAVE_X11
-  x_wm_set_size_hint (s, 0);
+  x_wm_set_size_hint (f, 0);
 #endif
   UNBLOCK_INPUT;
 }
 
-/* Call this to change the size of screen S's x-window. */
-
-x_set_window_size (s, cols, rows)
-     struct screen *s;
+/* Call this to change the size of frame F's x-window. */
+
+x_set_window_size (f, cols, rows)
+     struct frame *f;
      register int cols, rows;
 {
   int pixelwidth, pixelheight;
   int mask;
-  int ibw = s->display.x->internal_border_width;
+  int ibw = f->display.x->internal_border_width;
 
   BLOCK_INPUT;
 
   /* ??? Who DOES worry about minimum reasonable sizes?  */
-  pixelwidth =  (cols * FONT_WIDTH (s->display.x->font) + 2 * ibw
-		 + s->display.x->v_scrollbar_width);
-  pixelheight = (rows * FONT_HEIGHT (s->display.x->font) + 2 * ibw
-		 + s->display.x->h_scrollbar_height);
+  pixelwidth =  (cols * FONT_WIDTH (f->display.x->font) + 2 * ibw
+		 + f->display.x->v_scrollbar_width);
+  pixelheight = (rows * FONT_HEIGHT (f->display.x->font) + 2 * ibw
+		 + f->display.x->h_scrollbar_height);
 
 #ifdef HAVE_X11
-  x_wm_set_size_hint (s, 0);
+  x_wm_set_size_hint (f, 0);
 #endif /* HAVE_X11 */
-  XChangeWindowSize (s->display.x->window_desc, pixelwidth, pixelheight);
+  XChangeWindowSize (f->display.x->window_desc, pixelwidth, pixelheight);
   XFlushQueue ();
   UNBLOCK_INPUT;
 }
 
 #ifndef HAVE_X11
-x_set_resize_hint (s)
-     struct screen *s;
+x_set_resize_hint (f)
+     struct frame *f;
 {
 
-  XSetResizeHint (s->display.x->window_desc, 2 * s->display.x->internal_border_width,
-		  2 * s->display.x->internal_border_width,
-		  FONT_WIDTH (s->display.x->font), FONT_HEIGHT (s->display.x->font));
+  XSetResizeHint (f->display.x->window_desc, 2 * f->display.x->internal_border_width,
+		  2 * f->display.x->internal_border_width,
+		  FONT_WIDTH (f->display.x->font), FONT_HEIGHT (f->display.x->font));
 }
 #endif /* not HAVE_X11 */
 
 
-x_set_mouse_position (s, x, y)
-     struct screen *s;
+x_set_mouse_position (f, x, y)
+     struct frame *f;
      int x, y;
 {
   int pix_x, pix_y;
 
-  x_raise_screen (s);
+  x_raise_frame (f);
 
   if (x < 0)
-    pix_x = (SCREEN_WIDTH (s)
-             * FONT_WIDTH (s->display.x->font)
-             + 2 * s->display.x->internal_border_width
-             + s->display.x->v_scrollbar_width) / 2;
+    pix_x = (FRAME_WIDTH (f)
+             * FONT_WIDTH (f->display.x->font)
+             + 2 * f->display.x->internal_border_width
+             + f->display.x->v_scrollbar_width) / 2;
   else
-    pix_x = x * FONT_WIDTH (s->display.x->font) + 2; /* add 2 pixels to each
+    pix_x = x * FONT_WIDTH (f->display.x->font) + 2; /* add 2 pixels to each
        						 dimension to move the
        						 mouse into the char
        						 cell */
 
   if (y < 0)
-    pix_y = (SCREEN_HEIGHT (s)
-             * FONT_HEIGHT (s->display.x->font)
-             + 2 * s->display.x->internal_border_width
-             + s->display.x->h_scrollbar_height) / 2;
+    pix_y = (FRAME_HEIGHT (f)
+             * FONT_HEIGHT (f->display.x->font)
+             + 2 * f->display.x->internal_border_width
+             + f->display.x->h_scrollbar_height) / 2;
   else
-    pix_y = y * FONT_HEIGHT (s->display.x->font) + 2;
+    pix_y = y * FONT_HEIGHT (f->display.x->font) + 2;
 
   BLOCK_INPUT;
   x_mouse_x = x;
   x_mouse_y = y;
 
-  XWarpMousePointer (s->display.x->window_desc, pix_x, pix_y);
+  XWarpMousePointer (f->display.x->window_desc, pix_x, pix_y);
   UNBLOCK_INPUT;
 }
 
 #ifdef HAVE_X11
-x_focus_on_screen (s)
-     struct screen *s;
+x_focus_on_frame (f)
+     struct frame *f;
 {
-  x_raise_screen (s);
+  x_raise_frame (f);
 #if 0
   /* I don't think that the ICCCM allows programs to do things like this
      without the interaction of the window manager.  Whatever you end up
-     doing with this code, do it to x_unfocus_screen too.  */
-  XSetInputFocus (x_current_display, s->display.x->window_desc,
+     doing with this code, do it to x_unfocus_frame too.  */
+  XSetInputFocus (x_current_display, f->display.x->window_desc,
 		  RevertToPointerRoot, CurrentTime);
 #endif
 }
 
-x_unfocus_screen (s)
-     struct screen *s;
+x_unfocus_frame (f)
+     struct frame *f;
 {
 #if 0
-  /* Look at the remarks in x_focus_on_screen.  */
-  if (x_focus_screen == s)
+  /* Look at the remarks in x_focus_on_frame.  */
+  if (x_focus_frame == f)
     XSetInputFocus (x_current_display, PointerRoot,
 		    RevertToPointerRoot, CurrentTime);
 #endif
@@ -3334,29 +3332,29 @@
 
 #endif
 
-/* Raise screen S.  */
-
-x_raise_screen (s)
-     struct screen *s;
+/* Raise frame F.  */
+
+x_raise_frame (f)
+     struct frame *f;
 {
-  if (s->visible)
+  if (f->visible)
     {
       BLOCK_INPUT;
-      XRaiseWindow (XDISPLAY s->display.x->window_desc);
+      XRaiseWindow (XDISPLAY f->display.x->window_desc);
       XFlushQueue ();
       UNBLOCK_INPUT;
     }
 }
 
-/* Lower screen S.  */
-
-x_lower_screen (s)
-     struct screen *s;
+/* Lower frame F.  */
+
+x_lower_frame (f)
+     struct frame *f;
 {
-  if (s->visible)
+  if (f->visible)
     {
       BLOCK_INPUT;
-      XLowerWindow (XDISPLAY s->display.x->window_desc);
+      XLowerWindow (XDISPLAY f->display.x->window_desc);
       XFlushQueue ();
       UNBLOCK_INPUT;
     }
@@ -3364,32 +3362,32 @@
 
 /* Change from withdrawn state to mapped state. */
 
-x_make_screen_visible (s)
-     struct screen *s;
+x_make_frame_visible (f)
+     struct frame *f;
 {
   int mask;
 
   BLOCK_INPUT;
 
-  if (! SCREEN_VISIBLE_P (s))
+  if (! FRAME_VISIBLE_P (f))
     {
 #ifdef HAVE_X11
       if (! EQ (Vx_no_window_manager, Qt))
-	x_wm_set_window_state (s, NormalState);
-
-      XMapWindow (XDISPLAY s->display.x->window_desc);
-      if (s->display.x->v_scrollbar != 0 || s->display.x->h_scrollbar != 0)
-	XMapSubwindows (x_current_display, s->display.x->window_desc);
+	x_wm_set_window_state (f, NormalState);
+
+      XMapWindow (XDISPLAY f->display.x->window_desc);
+      if (f->display.x->v_scrollbar != 0 || f->display.x->h_scrollbar != 0)
+	XMapSubwindows (x_current_display, f->display.x->window_desc);
 #else
-      XMapWindow (XDISPLAY s->display.x->window_desc);
-      if (s->display.x->icon_desc != 0)
-	XUnmapWindow (s->display.x->icon_desc);
+      XMapWindow (XDISPLAY f->display.x->window_desc);
+      if (f->display.x->icon_desc != 0)
+	XUnmapWindow (f->display.x->icon_desc);
 
       /* Handled by the MapNotify event for X11 */
-      s->visible = 1;
-      s->iconified = 0;
-
-      /* NOTE: this may cause problems for the first screen. */
+      f->visible = 1;
+      f->iconified = 0;
+
+      /* NOTE: this may cause problems for the first frame. */
       XTcursor_to (0, 0);
 #endif				/* not HAVE_X11 */
     }
@@ -3401,12 +3399,12 @@
 
 /* Change from mapped state to withdrawn state. */
 
-x_make_screen_invisible (s)
-     struct screen *s;
+x_make_frame_invisible (f)
+     struct frame *f;
 {
   int mask;
 
-  if (! s->visible)
+  if (! f->visible)
     return;
 
   BLOCK_INPUT;
@@ -3417,7 +3415,7 @@
       XUnmapEvent unmap;
 
       unmap.type = UnmapNotify;
-      unmap.window = s->display.x->window_desc;
+      unmap.window = f->display.x->window_desc;
       unmap.event = DefaultRootWindow (x_current_display);
       unmap.from_configure = False;
       XSendEvent (x_current_display, DefaultRootWindow (x_current_display),
@@ -3432,7 +3430,7 @@
 #endif
 
   /* New function available with R4 */
-  if (! XWithdrawWindow (x_current_display, s->display.x->window_desc,
+  if (! XWithdrawWindow (x_current_display, f->display.x->window_desc,
 			 DefaultScreen (x_current_display)))
     {
       UNBLOCK_INPUT_RESIGNAL;
@@ -3440,11 +3438,11 @@
     }
 
 #else
-  XUnmapWindow (XDISPLAY s->display.x->window_desc);
-
-  s->visible = 0;		/* Handled by the UnMap event for X11 */
-  if (s->display.x->icon_desc != 0)
-    XUnmapWindow (XDISPLAY s->display.x->icon_desc);
+  XUnmapWindow (XDISPLAY f->display.x->window_desc);
+
+  f->visible = 0;		/* Handled by the UnMap event for X11 */
+  if (f->display.x->icon_desc != 0)
+    XUnmapWindow (XDISPLAY f->display.x->icon_desc);
 #endif /* not HAVE_X11 */
 
   XFlushQueue ();
@@ -3456,32 +3454,32 @@
 
 /* Change window state from mapped to iconified. */
 
-x_iconify_screen (s)
-     struct screen *s;
+x_iconify_frame (f)
+     struct frame *f;
 {
   int mask;
 
-  if (s->iconified)
+  if (f->iconified)
     return;
 
   BLOCK_INPUT;
 
 #ifdef HAVE_X11
   if (! EQ (Vx_no_window_manager, Qt))
-    if (! XIconifyWindow (x_current_display, s->display.x->window_desc,
+    if (! XIconifyWindow (x_current_display, f->display.x->window_desc,
 			  DefaultScreen (x_current_display)))
       {
 	UNBLOCK_INPUT_RESIGNAL;
 	error ("Can't notify window manager of iconification.");
       }
 
-  s->iconified = 1;
+  f->iconified = 1;
   
 #if 0
     {
       XClientMessageEvent message;
     
-      message.window = s->display.x->window_desc;
+      message.window = f->display.x->window_desc;
       message.type = ClientMessage;
       message.message_type = Xatom_wm_change_state;
       message.format = 32;
@@ -3499,13 +3497,13 @@
     }
 #endif
 #else /* X10 */
-  XUnmapWindow (XDISPLAY s->display.x->window_desc);
-
-  s->visible = 0;		/* Handled in the UnMap event for X11. */
-  if (s->display.x->icon_desc != 0)
+  XUnmapWindow (XDISPLAY f->display.x->window_desc);
+
+  f->visible = 0;		/* Handled in the UnMap event for X11. */
+  if (f->display.x->icon_desc != 0)
     {
-      XMapWindow (XDISPLAY s->display.x->icon_desc);
-      refreshicon (s);
+      XMapWindow (XDISPLAY f->display.x->icon_desc);
+      refreshicon (f);
     }
 #endif /* X10 */
 
@@ -3513,12 +3511,12 @@
   UNBLOCK_INPUT;
 }
 
-/* Destroy the X window of screen S.
-   DISPL is the former s->display (since s->display
+/* Destroy the X window of frame F.
+   DISPL is the former f->display (since f->display
    has already been nulled out).  */
 
-x_destroy_window (s, displ)
-     struct screen *s;
+x_destroy_window (f, displ)
+     struct frame *f;
      union display displ;
 {
   int mask;
@@ -3531,10 +3529,10 @@
   UNBLOCK_INPUT;
 
   free (displ.x);
-  if (s == x_focus_screen)
-    x_focus_screen = 0;
-  if (s == x_highlight_screen)
-    x_highlight_screen = 0;
+  if (f == x_focus_frame)
+    x_focus_frame = 0;
+  if (f == x_highlight_frame)
+    x_highlight_frame = 0;
 }
 
 #ifndef HAVE_X11
@@ -3611,38 +3609,38 @@
 
 #ifdef HAVE_X11
 
-x_wm_set_size_hint (s, prompting)
-     struct screen *s;
+x_wm_set_size_hint (f, prompting)
+     struct frame *f;
      long prompting;
 {
   XSizeHints size_hints;
-  Window window = s->display.x->window_desc;
+  Window window = f->display.x->window_desc;
 
   size_hints.flags = PResizeInc | PMinSize | PMaxSize;
 #ifdef PBaseSize
   size_hints.flags |= PBaseSize;
 #endif
 
-  flexlines = s->height;
-
-  size_hints.x = s->display.x->left_pos;
-  size_hints.y = s->display.x->top_pos;
-  size_hints.height = PIXEL_HEIGHT (s);
-  size_hints.width = PIXEL_WIDTH (s);
-  size_hints.width_inc = FONT_WIDTH (s->display.x->font);
-  size_hints.height_inc = FONT_HEIGHT (s->display.x->font);
-  size_hints.base_width = (2 * s->display.x->internal_border_width)
-    + s->display.x->v_scrollbar_width;
-  size_hints.base_height = (2 * s->display.x->internal_border_width)
-    + s->display.x->h_scrollbar_height;
+  flexlines = f->height;
+
+  size_hints.x = f->display.x->left_pos;
+  size_hints.y = f->display.x->top_pos;
+  size_hints.height = PIXEL_HEIGHT (f);
+  size_hints.width = PIXEL_WIDTH (f);
+  size_hints.width_inc = FONT_WIDTH (f->display.x->font);
+  size_hints.height_inc = FONT_HEIGHT (f->display.x->font);
+  size_hints.base_width = (2 * f->display.x->internal_border_width)
+    + f->display.x->v_scrollbar_width;
+  size_hints.base_height = (2 * f->display.x->internal_border_width)
+    + f->display.x->h_scrollbar_height;
   size_hints.min_width = size_hints.base_width + size_hints.width_inc;
   size_hints.min_height = size_hints.base_height + size_hints.height_inc;
   size_hints.max_width = x_screen_width
-    - ((2 * s->display.x->internal_border_width)
-       + s->display.x->v_scrollbar_width);
+    - ((2 * f->display.x->internal_border_width)
+       + f->display.x->v_scrollbar_width);
   size_hints.max_height = x_screen_height
-    - ((2 * s->display.x->internal_border_width)
-       + s->display.x->h_scrollbar_height);
+    - ((2 * f->display.x->internal_border_width)
+       + f->display.x->h_scrollbar_height);
 
   if (prompting)
     size_hints.flags |= prompting;
@@ -3668,36 +3666,36 @@
 }
 
 /* Used for IconicState or NormalState */
-x_wm_set_window_state (s, state)
-     struct screen *s;
+x_wm_set_window_state (f, state)
+     struct frame *f;
      int state;
 {
   XWMHints wm_hints;
-  Window window = s->display.x->window_desc;
+  Window window = f->display.x->window_desc;
 
   wm_hints.flags = StateHint;
   wm_hints.initial_state = state;
   XSetWMHints (x_current_display, window, &wm_hints);
 }
 
-x_wm_set_icon_pixmap (s, icon_pixmap)
-     struct screen *s;
+x_wm_set_icon_pixmap (f, icon_pixmap)
+     struct frame *f;
      Pixmap icon_pixmap;
 {
   XWMHints wm_hints;
-  Window window = s->display.x->window_desc;
+  Window window = f->display.x->window_desc;
 
   wm_hints.flags = IconPixmapHint;
   wm_hints.icon_pixmap = icon_pixmap;
   XSetWMHints (x_current_display, window, &wm_hints);
 }
 
-x_wm_set_icon_position (s, icon_x, icon_y)
-     struct screen *s;
+x_wm_set_icon_position (f, icon_x, icon_y)
+     struct frame *f;
      int icon_x, icon_y;
 {
   XWMHints wm_hints;
-  Window window = s->display.x->window_desc;
+  Window window = f->display.x->window_desc;
 
   wm_hints.flags = IconPositionHint;
   wm_hints.icon_x = icon_x;
@@ -3710,13 +3708,13 @@
 x_term_init (display_name)
      char *display_name;
 {
-  Lisp_Object screen;
+  Lisp_Object frame;
   char *defaultvalue;
 #ifdef F_SETOWN
   extern int old_fcntl_owner;
 #endif
   
-  x_focus_screen = x_highlight_screen = 0;
+  x_focus_frame = x_highlight_frame = 0;
 
   x_current_display = XOpenDisplay (display_name);
   if (x_current_display == 0)
@@ -3791,7 +3789,7 @@
 
   expose_all_windows = 0;
 
-  clear_screen_hook = XTclear_screen;
+  clear_frame_hook = XTclear_frame;
   clear_end_of_line_hook = XTclear_end_of_line;
   ins_del_lines_hook = XTins_del_lines;
   change_line_highlight_hook = XTchange_line_highlight;
@@ -3807,14 +3805,14 @@
   read_socket_hook = XTread_socket;
   cursor_to_hook = XTcursor_to;
   reassert_line_highlight_hook = XTreassert_line_highlight;
-  screen_rehighlight_hook = XTscreen_rehighlight;
+  frame_rehighlight_hook = XTframe_rehighlight;
   mouse_position_hook = XTmouse_position;
   
-  scroll_region_ok = 1;		/* we'll scroll partial screens */
+  scroll_region_ok = 1;		/* we'll scroll partial frames */
   char_ins_del_ok = 0;		/* just as fast to write the line */
   line_ins_del_ok = 1;		/* we'll just blt 'em */
   fast_clear_end_of_line = 1;	/* X does this well */
-  memory_below_screen = 0;	/* we don't remember what scrolls 
+  memory_below_frame = 0;	/* we don't remember what scrolls 
 				   off the bottom */
   baud_rate = 19200;
 
--- a/src/xterm.h	Tue Jul 14 15:57:45 1992 +0000
+++ b/src/xterm.h	Tue Jul 14 16:25:43 1992 +0000
@@ -166,12 +166,12 @@
 
 extern Display *x_current_display;
 
-extern struct screen *x_window_to_screen ();
+extern struct frame *x_window_to_frame ();
 
-/* The screen (if any) which has the X window that has keyboard focus.
-   Zero if none.  This is examined by Ffocus_screen in xfns.c */
+/* The frame (if any) which has the X window that has keyboard focus.
+   Zero if none.  This is examined by Ffocus_frame in xfns.c */
 
-struct screen *x_focus_screen;
+struct frame *x_focus_frame;
 
 #ifdef HAVE_X11
 /* Variables associated with the X display screen this emacs is using. */
@@ -218,7 +218,7 @@
 #define PIXEL_WIDTH(s) ((s)->display.x->pixel_width)
 #define PIXEL_HEIGHT(s) ((s)->display.x->pixel_height)
 
-/* Each X screen object points to its own struct x_display object
+/* Each X frame object points to its own struct x_display object
    in the display.x field.  The x_display structure contains all
    the information that is specific to X windows.  */
 
@@ -235,7 +235,7 @@
   int pixel_height, pixel_width;
 
 #ifdef HAVE_X11
-  /* The tiled border used when the mouse is out of the screen. */
+  /* The tiled border used when the mouse is out of the frame. */
   Pixmap border_tile;
 
   /* Here are the Graphics Contexts for the default font. */
@@ -245,12 +245,12 @@
 #endif /* HAVE_X11 */
 
   /* Width of the internal border.  This is a line of background color
-     just inside the window's border.  When the screen is selected,
+     just inside the window's border.  When the frame is selected,
      a highlighting is displayed inside the internal border.  */
   int internal_border_width;
 
-  /* The X window used for this screen.
-     May be zero while the screen object is being created
+  /* The X window used for this frame.
+     May be zero while the frame object is being created
      and the X window has not yet been created.  */
   Window window_desc;
 
@@ -302,7 +302,7 @@
 
   /* The name that was associated with the icon, the last time
      it was refreshed.  Usually the same as the name of the
-     buffer in the currently selected window in the screen */
+     buffer in the currently selected window in the frame */
   char *icon_label;
 
   /* Flag to set when the X window needs to be completely repainted. */
@@ -324,7 +324,7 @@
    fixed width, and to have the same height and width. */
 
 #ifdef HAVE_X11
-/* Table of GC's used for this screen. */
+/* Table of GC's used for this frame. */
 GC *gc_table;
 
 /* How many GCs are in the table. */