+ /* Ensure that earlier new_width and new_height settings won't
+ override what we specify below. */
+ f->new_width = f->new_height = 0;
+
+ height = x_get_arg (dpyinfo, parms, Qheight, 0, 0, RES_TYPE_NUMBER);
+ width = x_get_arg (dpyinfo, parms, Qwidth, 0, 0, RES_TYPE_NUMBER);
+ if (!EQ (width, Qunbound) || !EQ (height, Qunbound))
+ {
+ if (!EQ (width, Qunbound))
+ {
+ if (CONSP (width) && EQ (XCAR (width), Qtext_pixels))
+ {
+ CHECK_NUMBER (XCDR (width));
+ if ((XINT (XCDR (width)) < 0 || XINT (XCDR (width)) > INT_MAX))
+ xsignal1 (Qargs_out_of_range, XCDR (width));
+
+ SET_FRAME_WIDTH (f, XINT (XCDR (width)));
+ f->inhibit_horizontal_resize = true;
+ *x_width = XINT (XCDR (width));
+ }
+ else
+ {
+ CHECK_NUMBER (width);
+ if ((XINT (width) < 0 || XINT (width) > INT_MAX))
+ xsignal1 (Qargs_out_of_range, width);
+
+ SET_FRAME_WIDTH (f, XINT (width) * FRAME_COLUMN_WIDTH (f));
+ }
+ }
+
+ if (!EQ (height, Qunbound))
+ {
+ if (CONSP (height) && EQ (XCAR (height), Qtext_pixels))
+ {
+ CHECK_NUMBER (XCDR (height));
+ if ((XINT (XCDR (height)) < 0 || XINT (XCDR (height)) > INT_MAX))
+ xsignal1 (Qargs_out_of_range, XCDR (height));
+
+ SET_FRAME_HEIGHT (f, XINT (XCDR (height)));
+ f->inhibit_vertical_resize = true;
+ *x_height = XINT (XCDR (height));
+ }
+ else
+ {
+ CHECK_NUMBER (height);
+ if ((XINT (height) < 0) || (XINT (height) > INT_MAX))
+ xsignal1 (Qargs_out_of_range, height);
+
+ SET_FRAME_HEIGHT (f, XINT (height) * FRAME_LINE_HEIGHT (f));
+ }
+ }
+
+ user_size = x_get_arg (dpyinfo, parms, Quser_size, 0, 0, RES_TYPE_NUMBER);
+ if (!NILP (user_size) && !EQ (user_size, Qunbound))
+ window_prompting |= USSize;
+ else
+ window_prompting |= PSize;
+ }
+