Subject: bug#598: 23.0.60; frame size issue (--geometry or default-frame-alist) when using customized default face

From: Chong Yidong <[email-masked]>
Date: Mon, 03 Nov 2008 11:00:17 -0500

"Tim Van Holder" <[email-masked]> writes:

> Unfortunately, even after a maintainer-clean + make bootstrap, the
> issue is not resolved for me.  In fact, the very first run of the new
> emacs resulted in a frame that was 168x61 instead of 132x57 (is that
> 132x60->132x57 as a result of menu/toolbars considered a bug or a
> feature?).

Does the following patch improve matters?

*** trunk/src/xfns.c.~1.727.~	2008-10-28 11:24:26.000000000 -0400
--- trunk/src/xfns.c	2008-11-03 10:33:55.000000000 -0500
***************
*** 3099,3104 ****
--- 3099,3118 ----
    x_default_parameter (f, parms, Qfont, font, "font", "Font", RES_TYPE_STRING);
  }
  
+ DEFUN ("x-wm-set-size-hint", Fx_wm_set_size_hint, Sx_wm_set_size_hint,
+        0, 1, 0,
+        doc: /* Send the size hints for frame FRAME to the window manager.  */)
+      (frame)
+      Lisp_Object frame;
+ {
+   struct frame *f;
+   if (NILP (frame))
+     frame = selected_frame;
+   f = XFRAME (frame);
+   BLOCK_INPUT;
+   x_wm_set_size_hint (f, 0, 0);
+   UNBLOCK_INPUT;
+ }
  
  DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
         1, 1, 0,
***************
*** 5944,5949 ****
--- 5958,5964 ----
    defsubr (&Sx_display_visual_class);
    defsubr (&Sx_display_backing_store);
    defsubr (&Sx_display_save_under);
+   defsubr (&Sx_wm_set_size_hint);
    defsubr (&Sx_create_frame);
    defsubr (&Sx_open_connection);
    defsubr (&Sx_close_connection);
*** trunk/lisp/term/x-win.el.~1.235.~	2008-08-30 19:54:06.000000000 -0400
--- trunk/lisp/term/x-win.el	2008-11-03 10:33:09.000000000 -0500
***************
*** 1540,1545 ****
--- 1540,1548 ----
    ;; Don't let Emacs suspend under X.
    (add-hook 'suspend-hook 'x-win-suspend-error)
  
+   ;; Set wm hints after initialization
+   (add-hook 'after-init-hook 'x-wm-set-size-hint)
+ 
    ;; Turn off window-splitting optimization; X is usually fast enough
    ;; that this is only annoying.
    (setq split-window-keep-point t)