Subject: bug#5736: 23.1; Xresource menuBar does not work as advertized

From: Jan Djärv <[email-masked]>
Date: Sun, 21 Mar 2010 08:35:38 +0100

Stefan Monnier skrev:
>> It is easy to fix, but as 23.2 is approaching, I guess the Emacs maintainers
>> must give their Ok.
> 
> I'd need to see the patch first,
> 

=== modified file 'doc/emacs/ChangeLog'
--- doc/emacs/ChangeLog	2010-03-06 19:02:49 +0000
+++ doc/emacs/ChangeLog	2010-03-20 12:35:25 +0000
@@ -1,3 +1,10 @@
+2010-03-20  Jan Djärv  <[email-masked]>
+
+	* xresources.texi (Table of Resources): Clarify toolBar number
+	for Gtk+.
+
+	* frames.texi (Menu Bars): menuBarLines => menuBar (bug#5736).
+
  2010-03-06  Chong Yidong  <[email-masked]>

  	* custom.texi (Init Examples): Add xref to Locals.

=== modified file 'doc/emacs/frames.texi'
--- doc/emacs/frames.texi	2010-03-02 22:56:36 +0000
+++ doc/emacs/frames.texi	2010-03-20 12:23:03 +0000
@@ -957,7 +957,7 @@
  With no argument, this command toggles Menu Bar mode, a
  minor mode.  With an argument, the command turns Menu Bar mode on if the
  argument is positive, off if the argument is not positive.  You can use
-the X resource @samp{menuBarLines} to control the initial setting of
+the X resource @samp{menuBar} to control the initial setting of
  Menu Bar mode.  @xref{Resources}.

  @kindex C-Mouse-3 @r{(when menu bar is disabled)}

=== modified file 'doc/emacs/xresources.texi'
--- doc/emacs/xresources.texi	2010-01-13 08:35:10 +0000
+++ doc/emacs/xresources.texi	2010-03-20 12:34:59 +0000
@@ -307,12 +307,14 @@
  @item @code{toolBar} (class @code{ToolBar})
  @cindex tool bar
  Number of lines to reserve for the tool bar.  A zero value suppresses
-the tool bar.  If the value is non-zero and
-@code{auto-resize-tool-bars} is non-@code{nil}, the tool bar's size
-will be changed automatically so that all tool bar items are visible.
+the tool bar.  For the Emacs tool bar (i.e. not Gtk+), if the value is
+non-zero and @code{auto-resize-tool-bars} is non-@code{nil}, the tool bar's
+size will be changed automatically so that all tool bar items are visible.
    If the value of @code{auto-resize-tool-bars} is @code{grow-only},
  the tool bar expands automatically, but does not contract automatically.
  To contract the tool bar, you must redraw the frame by entering @kbd{C-l}.
+For the Gtk+ tool bar, any non-zero value means on and
+@code{auto-resize-tool-bars} has no effect.

  @item @code{useXIM} (class @code{UseXIM})
  @cindex XIM

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2010-03-20 03:37:39 +0000
+++ src/ChangeLog	2010-03-20 12:39:51 +0000
@@ -1,3 +1,11 @@
+2010-03-20  Jan Djärv  <[email-masked]>
+
+	* frame.c (x_get_arg): Handle RES_TYPE_BOOLEAN_NUMBER (bug #5736).
+
+	* xfns.c (Fx_create_frame): Make menuBar a RES_TYPE_BOOLEAN_NUMBER.
+
+	* dispextern.h (resource_types): RES_TYPE_BOOLEAN_NUMBER is new.
+
  2010-03-20  YAMAMOTO Mitsuharu  <[email-masked]>

  	* xfns.c (Fx_create_frame) [USE_LUCID]: Add BLOCK_INPUT around

=== modified file 'src/dispextern.h'
--- src/dispextern.h	2010-02-19 13:57:53 +0000
+++ src/dispextern.h	2010-03-20 12:35:41 +0000
@@ -3122,7 +3122,8 @@
    RES_TYPE_FLOAT,
    RES_TYPE_BOOLEAN,
    RES_TYPE_STRING,
-  RES_TYPE_SYMBOL
+  RES_TYPE_SYMBOL,
+  RES_TYPE_BOOLEAN_NUMBER
  };

  extern Lisp_Object x_get_arg P_ ((Display_Info *, Lisp_Object,

=== modified file 'src/frame.c'
--- src/frame.c	2010-01-29 19:02:02 +0000
+++ src/frame.c	2010-03-20 12:29:04 +0000
@@ -4005,6 +4005,13 @@
  	    case RES_TYPE_NUMBER:
  	      return make_number (atoi (SDATA (tem)));

+	    case RES_TYPE_BOOLEAN_NUMBER:
+	      if (!strcmp (SDATA (tem), "on")
+		  || !strcmp (SDATA (tem), "true"))
+		return make_number (1);
+	      return make_number (atoi (SDATA (tem)));
+              break;
+
  	    case RES_TYPE_FLOAT:
  	      return make_float (atof (SDATA (tem)));

=== modified file 'src/xfns.c'
--- src/xfns.c	2010-03-20 03:37:39 +0000
+++ src/xfns.c	2010-03-20 12:29:12 +0000
@@ -3418,7 +3418,7 @@
    init_frame_faces (f);

    x_default_parameter (f, parms, Qmenu_bar_lines, make_number (1),
-		       "menuBar", "MenuBar", RES_TYPE_NUMBER);
+		       "menuBar", "MenuBar", RES_TYPE_BOOLEAN_NUMBER);
    x_default_parameter (f, parms, Qtool_bar_lines, make_number (1),
  		       "toolBar", "ToolBar", RES_TYPE_NUMBER);
    x_default_parameter (f, parms, Qbuffer_predicate, Qnil,

	Jan D.