changeset 19293:af78882332ed

(IT_set_frame_parameters): Actually store the frame parameters in the frame parameters' alist.
author Richard M. Stallman <rms@gnu.org>
date Mon, 11 Aug 1997 21:40:57 +0000
parents 06e026c6ba9e
children 1f8ca0c4836f
files src/msdos.c
diffstat 1 files changed, 26 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/msdos.c	Mon Aug 11 18:32:12 1997 +0000
+++ b/src/msdos.c	Mon Aug 11 21:40:57 1997 +0000
@@ -1,5 +1,5 @@
 /* MS-DOS specific C utilities.
-   Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -956,18 +956,36 @@
      Lisp_Object alist;
 {
   Lisp_Object tail;
+  int length = XINT (Flength (alist));
+  int i;
+  Lisp_Object *parms
+    = (Lisp_Object *) alloca (length * sizeof (Lisp_Object));
+  Lisp_Object *values
+    = (Lisp_Object *) alloca (length * sizeof (Lisp_Object));
   int redraw;
   extern unsigned long load_color ();
 
   redraw = 0;
+
+  /* Extract parm names and values into those vectors.  */
+  i = 0;
   for (tail = alist; CONSP (tail); tail = Fcdr (tail))
     {
-      Lisp_Object elt, prop, val;
+      Lisp_Object elt;
 
       elt = Fcar (tail);
-      prop = Fcar (elt);
-      val = Fcdr (elt);
-      CHECK_SYMBOL (prop, 1);
+      parms[i] = Fcar (elt);
+      CHECK_SYMBOL (parms[i], 1);
+      values[i] = Fcdr (elt);
+      i++;
+    }
+
+
+  /* Now process them in reverse of specified order.  */
+  for (i--; i >= 0; i--)
+    {
+      Lisp_Object prop = parms[i];
+      Lisp_Object val  = values[i];
 
       if (EQ (prop, intern ("foreground-color")))
 	{
@@ -993,6 +1011,9 @@
 	}
       else if (EQ (prop, intern ("menu-bar-lines")))
 	x_set_menu_bar_lines (f, val, 0);
+
+      store_frame_param (f, prop, val);
+
     }
 
   if (redraw)