]> git.eshelyaron.com Git - emacs.git/commitdiff
* nsfns.m (get_geometry_from_preferences): New function.
authorJan Djärv <jan.h.d@swipnet.se>
Sun, 4 Dec 2011 13:25:16 +0000 (14:25 +0100)
committerJan Djärv <jan.h.d@swipnet.se>
Sun, 4 Dec 2011 13:25:16 +0000 (14:25 +0100)
(Fx_create_frame): Call get_geometry_from_preferences.

Fixes: debbugs:10103
src/ChangeLog
src/nsfns.m

index a1d5cc9d5bddfcdec2bfd07bd443c4c0a3a1cee9..a707eaae9eb18a2eaecf45cd516b1e9139326730 100644 (file)
@@ -1,3 +1,8 @@
+2011-12-04  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsfns.m (get_geometry_from_preferences): New function.
+       (Fx_create_frame): Call get_geometry_from_preferences (Bug#10103).
+
 2011-12-04  Andreas Schwab  <schwab@linux-m68k.org>
 
        * emacs.c (Qkill_emacs): Define.
index 280fee0b27b6057952e35c2581e30e24074fb0a2..482650fab2bb6fbb5196c017c5e7b01ecea37255 100644 (file)
@@ -1076,7 +1076,41 @@ unwind_create_frame (Lisp_Object frame)
   return Qnil;
 }
 
+/*
+ * Read geometry related parameters from preferences if not in PARMS.
+ * Returns the union of parms and any preferences read.
+ */
+
+static Lisp_Object
+get_geometry_from_preferences (struct ns_display_info *dpyinfo,
+                               Lisp_Object parms)
+{
+  struct {
+    const char *val;
+    const char *cls;
+    Lisp_Object tem;
+  } r[] = {
+    { "width",  "Width", Qwidth },
+    { "height", "Height", Qheight },
+    { "left", "Left", Qleft },
+    { "top", "Top", Qtop },
+  };
+
+  int i;
+  for (i = 0; i < sizeof (r)/sizeof (r[0]); ++i)
+    {
+      if (NILP (Fassq (r[i].tem, parms)))
+        {
+          Lisp_Object value
+            = x_get_arg (dpyinfo, parms, r[i].tem, r[i].val, r[i].cls,
+                         RES_TYPE_NUMBER);
+          if (! EQ (value, Qunbound))
+            parms = Fcons (Fcons (r[i].tem, value), parms);
+        }
+    }
 
+  return parms;
+}
 
 /* ==========================================================================
 
@@ -1285,6 +1319,7 @@ This function is an internal primitive--use `make-frame' instead.  */)
   x_default_parameter (f, parms, Qtitle, Qnil, "title", "Title",
                        RES_TYPE_STRING);
 
+  parms = get_geometry_from_preferences (dpyinfo, parms);
   window_prompting = x_figure_window_size (f, parms, 1);
 
   tem = x_get_arg (dpyinfo, parms, Qunsplittable, 0, 0, RES_TYPE_BOOLEAN);