From: Jan Djärv Date: Sun, 4 Dec 2011 13:25:16 +0000 (+0100) Subject: * nsfns.m (get_geometry_from_preferences): New function. X-Git-Tag: emacs-pretest-24.0.93~232^2~7 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a0c3fad023c0b5812db38d2f1bd41998d7c001b1;p=emacs.git * nsfns.m (get_geometry_from_preferences): New function. (Fx_create_frame): Call get_geometry_from_preferences. Fixes: debbugs:10103 --- diff --git a/src/ChangeLog b/src/ChangeLog index a1d5cc9d5bd..a707eaae9eb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2011-12-04 Jan Djärv + + * nsfns.m (get_geometry_from_preferences): New function. + (Fx_create_frame): Call get_geometry_from_preferences (Bug#10103). + 2011-12-04 Andreas Schwab * emacs.c (Qkill_emacs): Define. diff --git a/src/nsfns.m b/src/nsfns.m index 280fee0b27b..482650fab2b 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -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);