diff src/frame.c @ 51194:a873867ba3d2

Make (many) trivial substitutions for renamed and new macros in dispextern.h, frame.h and window.h. (make_frame): Initialize left_fringe_width, right_fringe_width, fringe_cols, scroll_bar_actual_width, border_width, internal_border_width, column_width, line_height, x_pixels_diff, y_pixels_diff, want_fullscreen, size_hint_flags, and win_gravity members with values suitable for a non-window frames.
author Kim F. Storm <storm@cua.dk>
date Sat, 24 May 2003 21:57:45 +0000
parents 178720d9eaff
children 695efa86354b
line wrap: on
line diff
--- a/src/frame.c	Sat May 24 21:57:05 2003 +0000
+++ b/src/frame.c	Sat May 24 21:57:45 2003 +0000
@@ -126,13 +126,13 @@
   struct window *w = XWINDOW (window);
 
   XSETFASTINT (w->last_modified, 0);
-  XSETFASTINT (w->top, XFASTINT (w->top) + n);
-  XSETFASTINT (w->height, XFASTINT (w->height) - n);
-
-  if (INTEGERP (w->orig_top))
-    XSETFASTINT (w->orig_top, XFASTINT (w->orig_top) + n);
-  if (INTEGERP (w->orig_height))
-    XSETFASTINT (w->orig_height, XFASTINT (w->orig_height) - n);
+  XSETFASTINT (w->top_line, XFASTINT (w->top_line) + n);
+  XSETFASTINT (w->total_lines, XFASTINT (w->total_lines) - n);
+
+  if (INTEGERP (w->orig_top_line))
+    XSETFASTINT (w->orig_top_line, XFASTINT (w->orig_top_line) + n);
+  if (INTEGERP (w->orig_total_lines))
+    XSETFASTINT (w->orig_total_lines, XFASTINT (w->orig_total_lines) - n);
 
   /* Handle just the top child in a vertical split.  */
   if (!NILP (w->vchild))
@@ -285,6 +285,17 @@
   f->tool_bar_items = Qnil;
   f->desired_tool_bar_string = f->current_tool_bar_string = Qnil;
   f->n_tool_bar_items = 0;
+  f->left_fringe_width = f->right_fringe_width = 0;
+  f->fringe_cols = 0;
+  f->scroll_bar_actual_width = 0;
+  f->border_width = 0;
+  f->internal_border_width = 0;
+  f->column_width = 1;  /* !FRAME_WINDOW_P value */
+  f->line_height = 1;  /* !FRAME_WINDOW_P value */
+  f->x_pixels_diff = f->y_pixels_diff = 0;
+  f->want_fullscreen = FULLSCREEN_NONE;
+  f->size_hint_flags = 0;
+  f->win_gravity = 0;
 
   root_window = make_window ();
   if (mini_p)
@@ -309,17 +320,17 @@
      just so that there is "something there."
      Correct size will be set up later with change_frame_size.  */
 
-  SET_FRAME_WIDTH (f, 10);
-  f->height = 10;
-
-  XSETFASTINT (XWINDOW (root_window)->width, 10);
-  XSETFASTINT (XWINDOW (root_window)->height, (mini_p ? 9 : 10));
+  SET_FRAME_COLS (f, 10);
+  FRAME_LINES (f) = 10;
+
+  XSETFASTINT (XWINDOW (root_window)->total_cols, 10);
+  XSETFASTINT (XWINDOW (root_window)->total_lines, (mini_p ? 9 : 10));
 
   if (mini_p)
     {
-      XSETFASTINT (XWINDOW (mini_window)->width, 10);
-      XSETFASTINT (XWINDOW (mini_window)->top, 9);
-      XSETFASTINT (XWINDOW (mini_window)->height, 1);
+      XSETFASTINT (XWINDOW (mini_window)->total_cols, 10);
+      XSETFASTINT (XWINDOW (mini_window)->top_line, 9);
+      XSETFASTINT (XWINDOW (mini_window)->total_lines, 1);
     }
 
   /* Choose a buffer for the frame's root window.  */
@@ -339,7 +350,7 @@
        don't have the right size, glyph matrices aren't initialized
        etc.  Running Lisp functions at this point surely ends in a
        SEGV.  */
-    set_window_buffer (root_window, buf, 0);
+    set_window_buffer (root_window, buf, 0, 0);
     f->buffer_list = Fcons (buf, Qnil);
   }
 
@@ -350,7 +361,7 @@
 			 (NILP (Vminibuffer_list)
 			  ? get_minibuffer (0)
 			  : Fcar (Vminibuffer_list)),
-			 0);
+			 0, 0);
     }
 
   f->root_window = root_window;
@@ -415,7 +426,7 @@
     Fset_window_buffer (mini_window,
 			(NILP (Vminibuffer_list)
 			 ? get_minibuffer (0)
-			 : Fcar (Vminibuffer_list)));
+			 : Fcar (Vminibuffer_list)), Qnil);
   return f;
 }
 
@@ -453,7 +464,7 @@
   Fset_window_buffer (mini_window,
 		      (NILP (Vminibuffer_list)
 		       ? get_minibuffer (0)
-		       : Fcar (Vminibuffer_list)));
+		       : Fcar (Vminibuffer_list)), Qnil);
   return f;
 }
 #endif /* HAVE_WINDOW_SYSTEM */
@@ -573,8 +584,8 @@
 
   f = make_terminal_frame ();
 
-  change_frame_size (f, FRAME_HEIGHT (sf),
-		     FRAME_WIDTH (sf), 0, 0, 0);
+  change_frame_size (f, FRAME_LINES (sf),
+		     FRAME_COLS (sf), 0, 0, 0);
   adjust_glyphs (f);
   calculate_costs (f);
   XSETFRAME (frame, f);
@@ -1228,7 +1239,7 @@
   if (EQ (f->minibuffer_window, minibuf_window))
     {
       Fset_window_buffer (sf->minibuffer_window,
-			  XWINDOW (minibuf_window)->buffer);
+			  XWINDOW (minibuf_window)->buffer, Qnil);
       minibuf_window = sf->minibuffer_window;
 
       /* If the dying minibuffer window was selected,
@@ -1603,7 +1614,7 @@
     {
       struct frame *sf = XFRAME (selected_frame);
       Fset_window_buffer (sf->minibuffer_window,
-			  XWINDOW (minibuf_window)->buffer);
+			  XWINDOW (minibuf_window)->buffer, Qnil);
       minibuf_window = sf->minibuffer_window;
     }
 
@@ -1642,7 +1653,7 @@
     {
       struct frame *sf = XFRAME (selected_frame);
       Fset_window_buffer (sf->minibuffer_window,
-			  XWINDOW (minibuf_window)->buffer);
+			  XWINDOW (minibuf_window)->buffer, Qnil);
       minibuf_window = sf->minibuffer_window;
     }
 
@@ -2080,9 +2091,9 @@
 				    :"tty"));
     }
   store_in_alist (&alist, Qname, f->name);
-  height = (FRAME_NEW_HEIGHT (f) ? FRAME_NEW_HEIGHT (f) : FRAME_HEIGHT (f));
+  height = (f->new_text_lines ? f->new_text_lines : FRAME_LINES (f));
   store_in_alist (&alist, Qheight, make_number (height));
-  width = (FRAME_NEW_WIDTH (f) ? FRAME_NEW_WIDTH (f) : FRAME_WIDTH (f));
+  width = (f->new_text_cols ? f->new_text_cols : FRAME_COLS (f));
   store_in_alist (&alist, Qwidth, make_number (width));
   store_in_alist (&alist, Qmodeline, (FRAME_WANTS_MODELINE_P (f) ? Qt : Qnil));
   store_in_alist (&alist, Qminibuffer,
@@ -2336,7 +2347,7 @@
     return make_number (x_pixel_height (f));
   else
 #endif
-    return make_number (FRAME_HEIGHT (f));
+    return make_number (FRAME_LINES (f));
 }
 
 DEFUN ("frame-pixel-width", Fframe_pixel_width,
@@ -2359,7 +2370,7 @@
     return make_number (x_pixel_width (f));
   else
 #endif
-    return make_number (FRAME_WIDTH (f));
+    return make_number (FRAME_COLS (f));
 }
 
 DEFUN ("set-frame-height", Fset_frame_height, Sset_frame_height, 2, 3, 0,
@@ -2381,8 +2392,8 @@
 #ifdef HAVE_WINDOW_SYSTEM
   if (FRAME_WINDOW_P (f))
     {
-      if (XINT (lines) != f->height)
-	x_set_window_size (f, 1, f->width, XINT (lines));
+      if (XINT (lines) != FRAME_LINES (f))
+	x_set_window_size (f, 1, FRAME_COLS (f), XINT (lines));
       do_pending_window_change (0);
     }
   else
@@ -2409,8 +2420,8 @@
 #ifdef HAVE_WINDOW_SYSTEM
   if (FRAME_WINDOW_P (f))
     {
-      if (XINT (cols) != f->width)
-	x_set_window_size (f, 1, XINT (cols), f->height);
+      if (XINT (cols) != FRAME_COLS (f))
+	x_set_window_size (f, 1, XINT (cols), FRAME_LINES (f));
       do_pending_window_change (0);
     }
   else
@@ -2435,8 +2446,9 @@
 #ifdef HAVE_WINDOW_SYSTEM
   if (FRAME_WINDOW_P (f))
     {
-      if (XINT (rows) != f->height || XINT (cols) != f->width
-	  || FRAME_NEW_HEIGHT (f) || FRAME_NEW_WIDTH (f))
+      if (XINT (rows) != FRAME_LINES (f)
+	  || XINT (cols) != FRAME_COLS (f)
+	  || f->new_text_lines || f->new_text_cols)
 	x_set_window_size (f, 1, XINT (cols), XINT (rows));
       do_pending_window_change (0);
     }
@@ -2541,32 +2553,31 @@
      int *top_pos;
      int *left_pos;
 {
-  int newwidth = f->width, newheight = f->height;
-
-  *top_pos = FRAME_X_OUTPUT (f)->top_pos;
-  *left_pos = FRAME_X_OUTPUT (f)->left_pos;
-
-  if (FRAME_X_OUTPUT (f)->want_fullscreen & FULLSCREEN_HEIGHT)
+  int newwidth = FRAME_COLS (f);
+  int newheight = FRAME_LINES (f);
+
+  *top_pos = f->top_pos;
+  *left_pos = f->left_pos;
+
+  if (f->want_fullscreen & FULLSCREEN_HEIGHT)
     {
       int ph;
 
       ph = FRAME_X_DISPLAY_INFO (f)->height;
-      newheight = PIXEL_TO_CHAR_HEIGHT (f, ph);
-      ph = CHAR_TO_PIXEL_HEIGHT (f, newheight)
-        - FRAME_X_OUTPUT (f)->y_pixels_diff;
-      newheight = PIXEL_TO_CHAR_HEIGHT (f, ph);
+      newheight = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, ph);
+      ph = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, newheight) - f->y_pixels_diff;
+      newheight = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, ph);
       *top_pos = 0;
     }
 
-  if (FRAME_X_OUTPUT (f)->want_fullscreen & FULLSCREEN_WIDTH)
+  if (f->want_fullscreen & FULLSCREEN_WIDTH)
     {
       int pw;
 
       pw = FRAME_X_DISPLAY_INFO (f)->width;
-      newwidth = PIXEL_TO_CHAR_WIDTH (f, pw);
-      pw = CHAR_TO_PIXEL_WIDTH (f, newwidth)
-        - FRAME_X_OUTPUT (f)->x_pixels_diff;
-      newwidth = PIXEL_TO_CHAR_WIDTH (f, pw);
+      newwidth = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, pw);
+      pw = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, newwidth) - f->x_pixels_diff;
+      newwidth = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, pw);
       *left_pos = 0;
     }
 
@@ -2586,8 +2597,7 @@
      int new_top;
      int new_left;
 {
-  if (new_top != FRAME_X_OUTPUT (f)->top_pos
-      || new_left != FRAME_X_OUTPUT (f)->left_pos)
+  if (new_top != f->top_pos || new_left != f->left_pos)
     {
       int move_x = new_left;
       int move_y = new_top;
@@ -2597,7 +2607,7 @@
       move_y += FRAME_X_OUTPUT (f)->y_pixels_outer_diff;
 #endif
 
-      FRAME_X_OUTPUT (f)->want_fullscreen |= FULLSCREEN_MOVE_WAIT;
+      f->want_fullscreen |= FULLSCREEN_MOVE_WAIT;
       x_set_offset (f, move_x, move_y, 1);
     }
 }
@@ -2668,15 +2678,8 @@
   icon_left = icon_top = Qunbound;
 
   /* Provide default values for HEIGHT and WIDTH.  */
-  if (FRAME_NEW_WIDTH (f))
-    width = FRAME_NEW_WIDTH (f);
-  else
-    width = FRAME_WIDTH (f);
-
-  if (FRAME_NEW_HEIGHT (f))
-    height = FRAME_NEW_HEIGHT (f);
-  else
-    height = FRAME_HEIGHT (f);
+  width = (f->new_text_cols ? f->new_text_cols : FRAME_COLS (f));
+  height = (f->new_text_lines ? f->new_text_lines : FRAME_LINES (f));
 
   /* Process foreground_color and background_color before anything else.
      They are independent of other properties, but other properties (e.g.,
@@ -2760,18 +2763,18 @@
   if (EQ (left, Qunbound))
     {
       left_no_change = 1;
-      if (FRAME_X_OUTPUT (f)->left_pos < 0)
-	left = Fcons (Qplus, Fcons (make_number (FRAME_X_OUTPUT (f)->left_pos), Qnil));
+      if (f->left_pos < 0)
+	left = Fcons (Qplus, Fcons (make_number (f->left_pos), Qnil));
       else
-	XSETINT (left, FRAME_X_OUTPUT (f)->left_pos);
+	XSETINT (left, f->left_pos);
     }
   if (EQ (top, Qunbound))
     {
       top_no_change = 1;
-      if (FRAME_X_OUTPUT (f)->top_pos < 0)
-	top = Fcons (Qplus, Fcons (make_number (FRAME_X_OUTPUT (f)->top_pos), Qnil));
+      if (f->top_pos < 0)
+	top = Fcons (Qplus, Fcons (make_number (f->top_pos), Qnil));
       else
-	XSETINT (top, FRAME_X_OUTPUT (f)->top_pos);
+	XSETINT (top, f->top_pos);
     }
 
   /* If one of the icon positions was not set, preserve or default it.  */
@@ -2823,35 +2826,35 @@
 
     XSETFRAME (frame, f);
 
-    if (width != FRAME_WIDTH (f)
-	|| height != FRAME_HEIGHT (f)
-	|| FRAME_NEW_HEIGHT (f) || FRAME_NEW_WIDTH (f))
+    if (width != FRAME_COLS (f)
+	|| height != FRAME_LINES (f)
+	|| f->new_text_lines || f->new_text_cols)
       Fset_frame_size (frame, make_number (width), make_number (height));
 
     if ((!NILP (left) || !NILP (top))
 	&& ! (left_no_change && top_no_change)
-	&& ! (NUMBERP (left) && XINT (left) == FRAME_X_OUTPUT (f)->left_pos
-	      && NUMBERP (top) && XINT (top) == FRAME_X_OUTPUT (f)->top_pos))
+	&& ! (NUMBERP (left) && XINT (left) == f->left_pos
+	      && NUMBERP (top) && XINT (top) == f->top_pos))
       {
 	int leftpos = 0;
 	int toppos = 0;
 
 	/* Record the signs.  */
-	FRAME_X_OUTPUT (f)->size_hint_flags &= ~ (XNegative | YNegative);
+	f->size_hint_flags &= ~ (XNegative | YNegative);
 	if (EQ (left, Qminus))
-	  FRAME_X_OUTPUT (f)->size_hint_flags |= XNegative;
+	  f->size_hint_flags |= XNegative;
 	else if (INTEGERP (left))
 	  {
 	    leftpos = XINT (left);
 	    if (leftpos < 0)
-	      FRAME_X_OUTPUT (f)->size_hint_flags |= XNegative;
+	      f->size_hint_flags |= XNegative;
 	  }
 	else if (CONSP (left) && EQ (XCAR (left), Qminus)
 		 && CONSP (XCDR (left))
 		 && INTEGERP (XCAR (XCDR (left))))
 	  {
 	    leftpos = - XINT (XCAR (XCDR (left)));
-	    FRAME_X_OUTPUT (f)->size_hint_flags |= XNegative;
+	    f->size_hint_flags |= XNegative;
 	  }
 	else if (CONSP (left) && EQ (XCAR (left), Qplus)
 		 && CONSP (XCDR (left))
@@ -2861,19 +2864,19 @@
 	  }
 
 	if (EQ (top, Qminus))
-	  FRAME_X_OUTPUT (f)->size_hint_flags |= YNegative;
+	  f->size_hint_flags |= YNegative;
 	else if (INTEGERP (top))
 	  {
 	    toppos = XINT (top);
 	    if (toppos < 0)
-	      FRAME_X_OUTPUT (f)->size_hint_flags |= YNegative;
+	      f->size_hint_flags |= YNegative;
 	  }
 	else if (CONSP (top) && EQ (XCAR (top), Qminus)
 		 && CONSP (XCDR (top))
 		 && INTEGERP (XCAR (XCDR (top))))
 	  {
 	    toppos = - XINT (XCAR (XCDR (top)));
-	    FRAME_X_OUTPUT (f)->size_hint_flags |= YNegative;
+	    f->size_hint_flags |= YNegative;
 	  }
 	else if (CONSP (top) && EQ (XCAR (top), Qplus)
 		 && CONSP (XCDR (top))
@@ -2884,10 +2887,10 @@
 
 
 	/* Store the numeric value of the position.  */
-	FRAME_X_OUTPUT (f)->top_pos = toppos;
-	FRAME_X_OUTPUT (f)->left_pos = leftpos;
-
-	FRAME_X_OUTPUT (f)->win_gravity = NorthWestGravity;
+	f->top_pos = toppos;
+	f->left_pos = leftpos;
+
+	f->win_gravity = NorthWestGravity;
 
 	/* Actually set that position, and convert to absolute.  */
 	x_set_offset (f, leftpos, toppos, -1);
@@ -2918,31 +2921,31 @@
 
   /* Represent negative positions (off the top or left screen edge)
      in a way that Fmodify_frame_parameters will understand correctly.  */
-  XSETINT (tem, FRAME_X_OUTPUT (f)->left_pos);
-  if (FRAME_X_OUTPUT (f)->left_pos >= 0)
+  XSETINT (tem, f->left_pos);
+  if (f->left_pos >= 0)
     store_in_alist (alistptr, Qleft, tem);
   else
     store_in_alist (alistptr, Qleft, Fcons (Qplus, Fcons (tem, Qnil)));
 
-  XSETINT (tem, FRAME_X_OUTPUT (f)->top_pos);
-  if (FRAME_X_OUTPUT (f)->top_pos >= 0)
+  XSETINT (tem, f->top_pos);
+  if (f->top_pos >= 0)
     store_in_alist (alistptr, Qtop, tem);
   else
     store_in_alist (alistptr, Qtop, Fcons (Qplus, Fcons (tem, Qnil)));
 
   store_in_alist (alistptr, Qborder_width,
-		  make_number (FRAME_X_OUTPUT (f)->border_width));
+		  make_number (f->border_width));
   store_in_alist (alistptr, Qinternal_border_width,
-		  make_number (FRAME_X_OUTPUT (f)->internal_border_width));
+		  make_number (FRAME_INTERNAL_BORDER_WIDTH (f)));
   store_in_alist (alistptr, Qleft_fringe,
-		  make_number (FRAME_X_OUTPUT (f)->left_fringe_width));
+		  make_number (FRAME_LEFT_FRINGE_WIDTH (f)));
   store_in_alist (alistptr, Qright_fringe,
-		  make_number (FRAME_X_OUTPUT (f)->right_fringe_width));
+		  make_number (FRAME_RIGHT_FRINGE_WIDTH (f)));
   store_in_alist (alistptr, Qscroll_bar_width,
 		  (! FRAME_HAS_VERTICAL_SCROLL_BARS (f)
 		   ? make_number (0)
-		   : FRAME_SCROLL_BAR_PIXEL_WIDTH (f) > 0
-		   ? make_number (FRAME_SCROLL_BAR_PIXEL_WIDTH (f))
+		   : FRAME_CONFIG_SCROLL_BAR_WIDTH (f) > 0
+		   ? make_number (FRAME_CONFIG_SCROLL_BAR_WIDTH (f))
 		   /* nil means "use default width"
 		      for non-toolkit scroll bar.
 		      ruler-mode.el depends on this.  */
@@ -2988,13 +2991,13 @@
 {
 #ifndef HAVE_CARBON
   if (NILP (new_value))
-    FRAME_X_OUTPUT (f)->want_fullscreen = FULLSCREEN_NONE;
+    f->want_fullscreen = FULLSCREEN_NONE;
   else if (EQ (new_value, Qfullboth))
-    FRAME_X_OUTPUT (f)->want_fullscreen = FULLSCREEN_BOTH;
+    f->want_fullscreen = FULLSCREEN_BOTH;
   else if (EQ (new_value, Qfullwidth))
-    FRAME_X_OUTPUT (f)->want_fullscreen = FULLSCREEN_WIDTH;
+    f->want_fullscreen = FULLSCREEN_WIDTH;
   else if (EQ (new_value, Qfullheight))
-    FRAME_X_OUTPUT (f)->want_fullscreen = FULLSCREEN_HEIGHT;
+    f->want_fullscreen = FULLSCREEN_HEIGHT;
 #endif
 }
 
@@ -3112,7 +3115,7 @@
 {
   CHECK_NUMBER (arg);
 
-  if (XINT (arg) == FRAME_X_OUTPUT (f)->border_width)
+  if (XINT (arg) == f->border_width)
     return;
 
 #ifndef HAVE_CARBON
@@ -3120,7 +3123,7 @@
     error ("Cannot change the border width of a window");
 #endif /* MAC_TODO */
 
-  FRAME_X_OUTPUT (f)->border_width = XINT (arg);
+  f->border_width = XINT (arg);
 }
 
 void
@@ -3128,24 +3131,24 @@
      struct frame *f;
      Lisp_Object arg, oldval;
 {
-  int old = FRAME_X_OUTPUT (f)->internal_border_width;
+  int old = FRAME_INTERNAL_BORDER_WIDTH (f);
 
   CHECK_NUMBER (arg);
-  FRAME_X_OUTPUT (f)->internal_border_width = XINT (arg);
-  if (FRAME_X_OUTPUT (f)->internal_border_width < 0)
-    FRAME_X_OUTPUT (f)->internal_border_width = 0;
+  FRAME_INTERNAL_BORDER_WIDTH (f) = XINT (arg);
+  if (FRAME_INTERNAL_BORDER_WIDTH (f) < 0)
+    FRAME_INTERNAL_BORDER_WIDTH (f) = 0;
 
 #ifdef USE_X_TOOLKIT
   if (FRAME_X_OUTPUT (f)->edit_widget)
     widget_store_internal_border (FRAME_X_OUTPUT (f)->edit_widget);
 #endif
 
-  if (FRAME_X_OUTPUT (f)->internal_border_width == old)
+  if (FRAME_INTERNAL_BORDER_WIDTH (f) == old)
     return;
 
   if (FRAME_X_WINDOW (f) != 0)
     {
-      x_set_window_size (f, 0, f->width, f->height);
+      x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f));
       SET_FRAME_GARBAGED (f);
       do_pending_window_change (0);
     }
@@ -3223,7 +3226,7 @@
 	 However, if the window hasn't been created yet, we shouldn't
 	 call x_set_window_size.  */
       if (FRAME_X_WINDOW (f))
-	x_set_window_size (f, 0, FRAME_WIDTH (f), FRAME_HEIGHT (f));
+	x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f));
       do_pending_window_change (0);
     }
 }
@@ -3233,30 +3236,30 @@
      struct frame *f;
      Lisp_Object arg, oldval;
 {
-  int wid = FONT_WIDTH (FRAME_FONT (f));
+  int wid = FRAME_COLUMN_WIDTH (f);
 
   if (NILP (arg))
     {
       x_set_scroll_bar_default_width (f);
 
       if (FRAME_X_WINDOW (f))
-        x_set_window_size (f, 0, FRAME_WIDTH (f), FRAME_HEIGHT (f));
+        x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f));
       do_pending_window_change (0);
     }
   else if (INTEGERP (arg) && XINT (arg) > 0
-	   && XFASTINT (arg) != FRAME_SCROLL_BAR_PIXEL_WIDTH (f))
+	   && XFASTINT (arg) != FRAME_CONFIG_SCROLL_BAR_WIDTH (f))
     {
       if (XFASTINT (arg) <= 2 * VERTICAL_SCROLL_BAR_WIDTH_TRIM)
 	XSETINT (arg, 2 * VERTICAL_SCROLL_BAR_WIDTH_TRIM + 1);
 
-      FRAME_SCROLL_BAR_PIXEL_WIDTH (f) = XFASTINT (arg);
-      FRAME_SCROLL_BAR_COLS (f) = (XFASTINT (arg) + wid-1) / wid;
+      FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = XFASTINT (arg);
+      FRAME_CONFIG_SCROLL_BAR_COLS (f) = (XFASTINT (arg) + wid-1) / wid;
       if (FRAME_X_WINDOW (f))
-	x_set_window_size (f, 0, FRAME_WIDTH (f), FRAME_HEIGHT (f));
+	x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f));
       do_pending_window_change (0);
     }
 
-  change_frame_size (f, 0, FRAME_WIDTH (f), 0, 0, 0);
+  change_frame_size (f, 0, FRAME_COLS (f), 0, 0, 0);
   XWINDOW (FRAME_SELECTED_WINDOW (f))->cursor.hpos = 0;
   XWINDOW (FRAME_SELECTED_WINDOW (f))->cursor.x = 0;
 }
@@ -3706,18 +3709,17 @@
   /* Default values if we fall through.
      Actually, if that happens we should get
      window manager prompting.  */
-  SET_FRAME_WIDTH (f, DEFAULT_COLS);
-  f->height = DEFAULT_ROWS;
+  SET_FRAME_COLS (f, DEFAULT_COLS);
+  FRAME_LINES (f) = DEFAULT_ROWS;
   /* Window managers expect that if program-specified
      positions are not (0,0), they're intentional, not defaults.  */
-  FRAME_X_OUTPUT (f)->top_pos = 0;
-  FRAME_X_OUTPUT (f)->left_pos = 0;
-
-  /* Ensure that old new_width and new_height will not override the
+  f->top_pos = 0;
+  f->left_pos = 0;
+
+  /* Ensure that old new_text_cols and new_text_lines will not override the
      values set here.  */
   /* ++KFS: This was specific to W32, but seems ok for all platforms */
-  FRAME_NEW_WIDTH (f) = 0;
-  FRAME_NEW_HEIGHT (f) = 0;
+  f->new_text_cols = f->new_text_lines = 0;
 
   tem0 = x_get_arg (dpyinfo, parms, Qheight, 0, 0, RES_TYPE_NUMBER);
   tem1 = x_get_arg (dpyinfo, parms, Qwidth, 0, 0, RES_TYPE_NUMBER);
@@ -3727,12 +3729,12 @@
       if (!EQ (tem0, Qunbound))
 	{
 	  CHECK_NUMBER (tem0);
-	  f->height = XINT (tem0);
+	  FRAME_LINES (f) = XINT (tem0);
 	}
       if (!EQ (tem1, Qunbound))
 	{
 	  CHECK_NUMBER (tem1);
-	  SET_FRAME_WIDTH (f, XINT (tem1));
+	  SET_FRAME_COLS (f, XINT (tem1));
 	}
       if (!NILP (tem2) && !EQ (tem2, Qunbound))
 	window_prompting |= USSize;
@@ -3740,15 +3742,8 @@
 	window_prompting |= PSize;
     }
 
-  FRAME_X_OUTPUT (f)->vertical_scroll_bar_extra
-    = (!FRAME_HAS_VERTICAL_SCROLL_BARS (f)
-       ? 0
-#ifndef HAVE_X_WINDOWS
-       /* +KFS: This was specific for W32 and MAC.. why?  */
-       : FRAME_SCROLL_BAR_PIXEL_WIDTH (f) > 0
-       ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f)
-#endif
-       : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (FRAME_X_OUTPUT (f)->font)));
+  f->scroll_bar_actual_width
+    = FRAME_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f);
 
   /* This used to be done _before_ calling x_figure_window_size, but
      since the height is reset here, this was really a no-op.  I
@@ -3780,13 +3775,13 @@
 	margin = 0;
 
       bar_height = DEFAULT_TOOL_BAR_IMAGE_HEIGHT + 2 * margin + 2 * relief;
-      f->height += (bar_height + CANON_Y_UNIT (f) - 1) / CANON_Y_UNIT (f);
+      FRAME_LINES (f) += (bar_height + FRAME_LINE_HEIGHT (f) - 1) / FRAME_LINE_HEIGHT (f);
     }
 
   compute_fringe_widths (f, 0);
 
-  FRAME_X_OUTPUT (f)->pixel_width = CHAR_TO_PIXEL_WIDTH (f, f->width);
-  FRAME_X_OUTPUT (f)->pixel_height = CHAR_TO_PIXEL_HEIGHT (f, f->height);
+  FRAME_PIXEL_WIDTH (f) = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, FRAME_COLS (f));
+  FRAME_PIXEL_HEIGHT (f) = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, FRAME_LINES (f));
 
   tem0 = x_get_arg (dpyinfo, parms, Qtop, 0, 0, RES_TYPE_NUMBER);
   tem1 = x_get_arg (dpyinfo, parms, Qleft, 0, 0, RES_TYPE_NUMBER);
@@ -3795,57 +3790,57 @@
     {
       if (EQ (tem0, Qminus))
 	{
-	  FRAME_X_OUTPUT (f)->top_pos = 0;
+	  f->top_pos = 0;
 	  window_prompting |= YNegative;
 	}
       else if (CONSP (tem0) && EQ (XCAR (tem0), Qminus)
 	       && CONSP (XCDR (tem0))
 	       && INTEGERP (XCAR (XCDR (tem0))))
 	{
-	  FRAME_X_OUTPUT (f)->top_pos = - XINT (XCAR (XCDR (tem0)));
+	  f->top_pos = - XINT (XCAR (XCDR (tem0)));
 	  window_prompting |= YNegative;
 	}
       else if (CONSP (tem0) && EQ (XCAR (tem0), Qplus)
 	       && CONSP (XCDR (tem0))
 	       && INTEGERP (XCAR (XCDR (tem0))))
 	{
-	  FRAME_X_OUTPUT (f)->top_pos = XINT (XCAR (XCDR (tem0)));
+	  f->top_pos = XINT (XCAR (XCDR (tem0)));
 	}
       else if (EQ (tem0, Qunbound))
-	FRAME_X_OUTPUT (f)->top_pos = 0;
+	f->top_pos = 0;
       else
 	{
 	  CHECK_NUMBER (tem0);
-	  FRAME_X_OUTPUT (f)->top_pos = XINT (tem0);
-	  if (FRAME_X_OUTPUT (f)->top_pos < 0)
+	  f->top_pos = XINT (tem0);
+	  if (f->top_pos < 0)
 	    window_prompting |= YNegative;
 	}
 
       if (EQ (tem1, Qminus))
 	{
-	  FRAME_X_OUTPUT (f)->left_pos = 0;
+	  f->left_pos = 0;
 	  window_prompting |= XNegative;
 	}
       else if (CONSP (tem1) && EQ (XCAR (tem1), Qminus)
 	       && CONSP (XCDR (tem1))
 	       && INTEGERP (XCAR (XCDR (tem1))))
 	{
-	  FRAME_X_OUTPUT (f)->left_pos = - XINT (XCAR (XCDR (tem1)));
+	  f->left_pos = - XINT (XCAR (XCDR (tem1)));
 	  window_prompting |= XNegative;
 	}
       else if (CONSP (tem1) && EQ (XCAR (tem1), Qplus)
 	       && CONSP (XCDR (tem1))
 	       && INTEGERP (XCAR (XCDR (tem1))))
 	{
-	  FRAME_X_OUTPUT (f)->left_pos = XINT (XCAR (XCDR (tem1)));
+	  f->left_pos = XINT (XCAR (XCDR (tem1)));
 	}
       else if (EQ (tem1, Qunbound))
-	FRAME_X_OUTPUT (f)->left_pos = 0;
+	f->left_pos = 0;
       else
 	{
 	  CHECK_NUMBER (tem1);
-	  FRAME_X_OUTPUT (f)->left_pos = XINT (tem1);
-	  if (FRAME_X_OUTPUT (f)->left_pos < 0)
+	  f->left_pos = XINT (tem1);
+	  if (f->left_pos < 0)
 	    window_prompting |= XNegative;
 	}
 
@@ -3855,7 +3850,7 @@
 	window_prompting |= PPosition;
     }
 
-  if (FRAME_X_OUTPUT (f)->want_fullscreen != FULLSCREEN_NONE)
+  if (f->want_fullscreen != FULLSCREEN_NONE)
     {
       int left, top;
       int width, height;
@@ -3863,30 +3858,30 @@
       /* It takes both for some WM:s to place it where we want */
       window_prompting = USPosition | PPosition;
       x_fullscreen_adjust (f, &width, &height, &top, &left);
-      f->width = width;
-      f->height = height;
-      FRAME_X_OUTPUT (f)->pixel_width = CHAR_TO_PIXEL_WIDTH (f, f->width);
-      FRAME_X_OUTPUT (f)->pixel_height = CHAR_TO_PIXEL_HEIGHT (f, f->height);
-      FRAME_X_OUTPUT (f)->left_pos = left;
-      FRAME_X_OUTPUT (f)->top_pos = top;
+      FRAME_COLS (f) = width;
+      FRAME_LINES (f) = height;
+      FRAME_PIXEL_WIDTH (f) = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, width);
+      FRAME_PIXEL_HEIGHT (f) = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, height);
+      f->left_pos = left;
+      f->top_pos = top;
     }
 
   if (window_prompting & XNegative)
     {
       if (window_prompting & YNegative)
-	FRAME_X_OUTPUT (f)->win_gravity = SouthEastGravity;
+	f->win_gravity = SouthEastGravity;
       else
-	FRAME_X_OUTPUT (f)->win_gravity = NorthEastGravity;
+	f->win_gravity = NorthEastGravity;
     }
   else
     {
       if (window_prompting & YNegative)
-	FRAME_X_OUTPUT (f)->win_gravity = SouthWestGravity;
+	f->win_gravity = SouthWestGravity;
       else
-	FRAME_X_OUTPUT (f)->win_gravity = NorthWestGravity;
+	f->win_gravity = NorthWestGravity;
     }
 
-  FRAME_X_OUTPUT (f)->size_hint_flags = window_prompting;
+  f->size_hint_flags = window_prompting;
 
   return window_prompting;
 }