unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [Fwd: Frame Height Different for Default Frame and Additional Frames]
       [not found]   ` <E1Iewxc-0004U8-CC@fencepost.gnu.org>
@ 2007-10-08 21:12     ` martin rudalics
  2007-10-09 20:02       ` Richard Stallman
  0 siblings, 1 reply; 31+ messages in thread
From: martin rudalics @ 2007-10-08 21:12 UTC (permalink / raw)
  To: emacs-devel

> From: Rocco Pigneri <rocco@intermedinc.net>
> To: bug-gnu-emacs@gnu.org
> Subject: Frame Height Different for Default Frame and Additional Frames
> 
>  > 1. Put the following line in your .emacs file:
>  >
>  > (add-to-list 'default-frame-alist '(height . 57))
>  >
>  > 2. Start a new instance of Emacs.  Note the height of the frame.
>  >
>  > 3. Press C-x 5 2 to create a new frame.  You will notice that this new frame
>  > is three lines longer than the old one.
> 
I can confirm that behavior with Emacs -Q (EMACS_22_BASE) on Windows ME.
Is this something that can be fixed or something that should be added to
~/etc/PROBLEMS ?  Note that the behavior violates the description from
the Elisp manual

  -- Variable: default-frame-alist
      This is an alist specifying default values of frame parameters for
      all Emacs frames--the first frame, and subsequent frames.  When ...

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-08 21:12     ` [Fwd: Frame Height Different for Default Frame and Additional Frames] martin rudalics
@ 2007-10-09 20:02       ` Richard Stallman
  2007-10-09 21:25         ` martin rudalics
  0 siblings, 1 reply; 31+ messages in thread
From: Richard Stallman @ 2007-10-09 20:02 UTC (permalink / raw)
  To: martin rudalics; +Cc: emacs-devel

    I can confirm that behavior with Emacs -Q (EMACS_22_BASE) on Windows ME.
    Is this something that can be fixed or something that should be added to
    ~/etc/PROBLEMS ?

If nobody else reports on having debugged this and tells what the
cause is, would you please debug it?

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-09 20:02       ` Richard Stallman
@ 2007-10-09 21:25         ` martin rudalics
  2007-10-10  5:55           ` Jan Djärv
  2007-10-10 21:03           ` [Fwd: Frame Height Different for Default Frame and Additional Frames] Richard Stallman
  0 siblings, 2 replies; 31+ messages in thread
From: martin rudalics @ 2007-10-09 21:25 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

> If nobody else reports on having debugged this and tells what the
> cause is, would you please debug it?

The cause is the toolbar.  Since I never use it I never noticed
the bug before.

I can reproduce the bug with the single-line .emacs:

(add-to-list 'default-frame-alist '(height . 37))

I can't reproduce it with the two-liner:

(add-to-list 'default-frame-alist '(height . 37))
(tool-bar-mode nil)

I faintly recall some discussion about this on emacs-devel.
Maybe the bug has been already fixed on the trunk and people
can't reproduce it now.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-09 21:25         ` martin rudalics
@ 2007-10-10  5:55           ` Jan Djärv
  2007-10-10  6:51             ` martin rudalics
  2007-10-11  5:19             ` Richard Stallman
  2007-10-10 21:03           ` [Fwd: Frame Height Different for Default Frame and Additional Frames] Richard Stallman
  1 sibling, 2 replies; 31+ messages in thread
From: Jan Djärv @ 2007-10-10  5:55 UTC (permalink / raw)
  To: martin rudalics; +Cc: rms, emacs-devel



martin rudalics skrev:
>> If nobody else reports on having debugged this and tells what the
>> cause is, would you please debug it?
> 
> The cause is the toolbar.  Since I never use it I never noticed
> the bug before.
> 
> I can reproduce the bug with the single-line .emacs:
> 
> (add-to-list 'default-frame-alist '(height . 37))
> 
> I can't reproduce it with the two-liner:
> 
> (add-to-list 'default-frame-alist '(height . 37))
> (tool-bar-mode nil)
> 
> I faintly recall some discussion about this on emacs-devel.
> Maybe the bug has been already fixed on the trunk and people
> can't reproduce it now.
> 

It has not been fixed.  Further more, different toolkits/ports needs different 
fixes, so the w32 port needs its own unique fix.

	Jan D.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-10  5:55           ` Jan Djärv
@ 2007-10-10  6:51             ` martin rudalics
  2007-10-10  7:39               ` Jan Djärv
  2007-10-11  5:19             ` Richard Stallman
  1 sibling, 1 reply; 31+ messages in thread
From: martin rudalics @ 2007-10-10  6:51 UTC (permalink / raw)
  To: Jan Djärv; +Cc: rms, emacs-devel

 > It has not been fixed.  Further more, different toolkits/ports needs
 > different fixes, so the w32 port needs its own unique fix.

I see.  But isn't this frame size increase hardcoded in the following
section of frame.c?

   /* This used to be done _before_ calling x_figure_window_size, but
      since the height is reset here, this was really a no-op.  I
      assume that moving it here does what Gerd intended (although he
      no longer can remember what that was...  ++KFS, 2003-03-25.  */

   /* Add the tool-bar height to the initial frame height so that the
      user gets a text display area of the size he specified with -g or
      via .Xdefaults.  Later changes of the tool-bar height don't
      change the frame size.  This is done so that users can create
      tall Emacs frames without having to guess how tall the tool-bar
      will get.  */
   if (toolbar_p && FRAME_TOOL_BAR_LINES (f))
     {
       ...

       bar_height = DEFAULT_TOOL_BAR_IMAGE_HEIGHT + 2 * margin + 2 * relief;
       FRAME_LINES (f) += (bar_height + FRAME_LINE_HEIGHT (f) - 1) / FRAME_LINE_HEIGHT (f);
     }

If I understand this code correctly, it always adds some lines to the
default frame when a toolbar is present.  Apparently it fails to do so
for the initial frame on w32.  The first comment is not really an
enlightment in this regard.

Could you clarify two things: (1) How is this code related to initial
frames and default frames; does (should) it affect only the latter or
both ?  (2) Doesn't the (toolbar_p && FRAME_TOOL_BAR_LINES (f))
condition hardcode a size increase whenever a toolbar is present ?

Also, the second comment seems to indicate that the frame size should
remain constant regardless of whether a toolbar is present or not.  Is
this correct ?

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-10  6:51             ` martin rudalics
@ 2007-10-10  7:39               ` Jan Djärv
  2007-10-10  7:50                 ` Jason Rumney
  2007-10-10 20:41                 ` martin rudalics
  0 siblings, 2 replies; 31+ messages in thread
From: Jan Djärv @ 2007-10-10  7:39 UTC (permalink / raw)
  To: martin rudalics; +Cc: rms, emacs-devel



martin rudalics skrev:
>  > It has not been fixed.  Further more, different toolkits/ports needs
>  > different fixes, so the w32 port needs its own unique fix.
> 
> I see.  But isn't this frame size increase hardcoded in the following
> section of frame.c?

I haven't seen this code before, it will not do the right thing for Gtk+ at 
least.  I think this code assumes the Emacs native tool bar.  I don't know if 
w32 uses that.


> 
>   /* This used to be done _before_ calling x_figure_window_size, but
>      since the height is reset here, this was really a no-op.  I
>      assume that moving it here does what Gerd intended (although he
>      no longer can remember what that was...  ++KFS, 2003-03-25.  */
> 
>   /* Add the tool-bar height to the initial frame height so that the
>      user gets a text display area of the size he specified with -g or
>      via .Xdefaults.  Later changes of the tool-bar height don't
>      change the frame size.  This is done so that users can create
>      tall Emacs frames without having to guess how tall the tool-bar
>      will get.  */
>   if (toolbar_p && FRAME_TOOL_BAR_LINES (f))
>     {
>       ...
> 
>       bar_height = DEFAULT_TOOL_BAR_IMAGE_HEIGHT + 2 * margin + 2 * relief;
>       FRAME_LINES (f) += (bar_height + FRAME_LINE_HEIGHT (f) - 1) / 
> FRAME_LINE_HEIGHT (f);
>     }
> 
> If I understand this code correctly, it always adds some lines to the
> default frame when a toolbar is present.  Apparently it fails to do so
> for the initial frame on w32.  The first comment is not really an
> enlightment in this regard.
> 
> Could you clarify two things: (1) How is this code related to initial
> frames and default frames; does (should) it affect only the latter or
> both ?  (2) Doesn't the (toolbar_p && FRAME_TOOL_BAR_LINES (f))
> condition hardcode a size increase whenever a toolbar is present ?

(1).  It depends on frame parameters and tool kit used. FRAME_TOOL_BAR_LINES 
is always 0 for Gtk+ which uses an external (gtk+) tool bar.  For the native 
Emacs tool bar, it is taken from the frame parameters.

(2)  Not for the external tool bar.  Then FRAME_TOOL_BAR_LINES (f) is 0.  But 
for the native Emacs tool bar, it does.


> 
> Also, the second comment seems to indicate that the frame size should
> remain constant regardless of whether a toolbar is present or not.  Is
> this correct ?

I think the purpose is that if you specify -g 80x24, you should get 24 lines 
that you can edit, with or without the tool bar.  The native tool bar confuses 
things by being specified in lines also (to help redisplay I guess).  So if 
you have a tool bar that occupies two lines and you said -g 80x24, the frame 
will actually be 26 lines high.  Or that is the intent anyway.

I think the bug is because frame parameters for the first frame is applied 
after the frame already has been created, but for frames created later, they 
are applied before the frame gets created.

	Jan D.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-10  7:39               ` Jan Djärv
@ 2007-10-10  7:50                 ` Jason Rumney
  2007-10-10 20:41                 ` martin rudalics
  1 sibling, 0 replies; 31+ messages in thread
From: Jason Rumney @ 2007-10-10  7:50 UTC (permalink / raw)
  To: Jan Djärv; +Cc: martin rudalics, rms, emacs-devel

Jan Djärv wrote:
> I haven't seen this code before, it will not do the right thing for
> Gtk+ at least.  I think this code assumes the Emacs native tool bar. 
> I don't know if w32 uses that.

It does.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-10  7:39               ` Jan Djärv
  2007-10-10  7:50                 ` Jason Rumney
@ 2007-10-10 20:41                 ` martin rudalics
  2007-10-11  6:15                   ` Jan Djärv
  1 sibling, 1 reply; 31+ messages in thread
From: martin rudalics @ 2007-10-10 20:41 UTC (permalink / raw)
  To: Jan Djärv; +Cc: rms, emacs-devel

 > I think the bug is because frame parameters for the first frame is
 > applied after the frame already has been created, but for frames created
 > later, they are applied before the frame gets created.

IIUC the value of `tool-bar-mode' is known only after the first frame
has been created.  Hence we can either remove the adjustment code for the
native tool-bar or add an entry to PROBLEMS.  Is there a third way?

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-09 21:25         ` martin rudalics
  2007-10-10  5:55           ` Jan Djärv
@ 2007-10-10 21:03           ` Richard Stallman
  1 sibling, 0 replies; 31+ messages in thread
From: Richard Stallman @ 2007-10-10 21:03 UTC (permalink / raw)
  To: martin rudalics; +Cc: emacs-devel

    I faintly recall some discussion about this on emacs-devel.
    Maybe the bug has been already fixed on the trunk and people
    can't reproduce it now.

Can you try updating the sources now and see if you can reproduce it?

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-10  5:55           ` Jan Djärv
  2007-10-10  6:51             ` martin rudalics
@ 2007-10-11  5:19             ` Richard Stallman
  2007-10-11  8:52               ` martin rudalics
  1 sibling, 1 reply; 31+ messages in thread
From: Richard Stallman @ 2007-10-11  5:19 UTC (permalink / raw)
  To: Jan Djärv; +Cc: rudalics, emacs-devel

Martin, could you try debugging this on GNU/Linux?

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-10 20:41                 ` martin rudalics
@ 2007-10-11  6:15                   ` Jan Djärv
  2007-10-11  8:52                     ` martin rudalics
  2007-10-11 14:01                     ` Stefan Monnier
  0 siblings, 2 replies; 31+ messages in thread
From: Jan Djärv @ 2007-10-11  6:15 UTC (permalink / raw)
  To: martin rudalics; +Cc: rms, emacs-devel



martin rudalics skrev:
>  > I think the bug is because frame parameters for the first frame is
>  > applied after the frame already has been created, but for frames created
>  > later, they are applied before the frame gets created.
> 
> IIUC the value of `tool-bar-mode' is known only after the first frame
> has been created.  Hence we can either remove the adjustment code for the
> native tool-bar or add an entry to PROBLEMS.  Is there a third way?
> 
> 

The obvious (but more difficult) would be to read all startup lisp before 
creating the first frame.  Or create an initial frame (like a splash screen), 
and then replace it with a proper "editing" frame.

What I had in mind was a modeless frame with the Gnu logo and one line of text 
from *Messages* at the borrom.  When startup is complete, then create a proper 
frame with tool bars, menus and such.  Of course there are special cases to 
handle, like debug on startup, errors in ~/.emacs and such.

Another way is to forcibly resize the frame after all startup code has been 
read and the value of `tool-bar-mode' is known.  I think Emacs used to do that 
before.  But it looks ugly.

	Jan D.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-11  5:19             ` Richard Stallman
@ 2007-10-11  8:52               ` martin rudalics
  2007-10-11 18:03                 ` Jan Djärv
  0 siblings, 1 reply; 31+ messages in thread
From: martin rudalics @ 2007-10-11  8:52 UTC (permalink / raw)
  To: rms; +Cc: Jan Djärv, emacs-devel

 > Martin, could you try debugging this on GNU/Linux?

Sorry no, my GUN/Linux machine crashed a while ago.  Someone using a
non-Gtk+ install would have to do that.  It would already be helpful if
someone could post here whether the behavior occurs on a non-Gtk+ Emacs
on GNU/Linux.

To reproduce:

Create a one-line .emacs like

(add-to-list 'default-frame-alist '(height . 37))

that is, the frame height should be less than that of your screen.

Start Emacs, do C-x 5 2, and tell us whether the heights of the two
frames differ.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-11  6:15                   ` Jan Djärv
@ 2007-10-11  8:52                     ` martin rudalics
  2007-10-11 14:01                     ` Stefan Monnier
  1 sibling, 0 replies; 31+ messages in thread
From: martin rudalics @ 2007-10-11  8:52 UTC (permalink / raw)
  To: Jan Djärv; +Cc: rms, emacs-devel

 > The obvious (but more difficult) would be to read all startup lisp
 > before creating the first frame.  Or create an initial frame (like a
 > splash screen), and then replace it with a proper "editing" frame.
 >
 > What I had in mind was a modeless frame with the Gnu logo and one line of text
 > from *Messages* at the borrom.  When startup is complete, then create a proper
 > frame with tool bars, menus and such.  Of course there are special cases to
 > handle, like debug on startup, errors in ~/.emacs and such.

I wonder whether there really is a gtk+/native toolbars dichotomy here.
After all it's up to .emacs whether I want a tool-/menu-/scrollbar, what
the size of the initial frame should be ...  Hence a gtk+ initial frame
must get resized as well when .emacs turns tool-bar-mode off.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-11  6:15                   ` Jan Djärv
  2007-10-11  8:52                     ` martin rudalics
@ 2007-10-11 14:01                     ` Stefan Monnier
  2007-10-14 16:29                       ` Richard Stallman
  1 sibling, 1 reply; 31+ messages in thread
From: Stefan Monnier @ 2007-10-11 14:01 UTC (permalink / raw)
  To: Jan Dj?rv; +Cc: martin rudalics, rms, emacs-devel

> The obvious (but more difficult) would be to read all startup lisp before
> creating the first frame.

It's not that difficult.  The first frame created is `terminal-frame' anyway
and this one does not need any information from .emacs.  Currently we create
a second (X11, or w32, or mac, or tty) frame and delete the `terminal-frame'
before reading the .emacs but we could do that later.


        Stefan

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-11  8:52               ` martin rudalics
@ 2007-10-11 18:03                 ` Jan Djärv
  2007-12-25 17:17                   ` Richard Stallman
  0 siblings, 1 reply; 31+ messages in thread
From: Jan Djärv @ 2007-10-11 18:03 UTC (permalink / raw)
  To: martin rudalics; +Cc: rms, emacs-devel

martin rudalics skrev:
>> Martin, could you try debugging this on GNU/Linux?
> 
> Sorry no, my GUN/Linux machine crashed a while ago.  Someone using a
> non-Gtk+ install would have to do that.  It would already be helpful if
> someone could post here whether the behavior occurs on a non-Gtk+ Emacs
> on GNU/Linux.
> 
> To reproduce:
> 
> Create a one-line .emacs like
> 
> (add-to-list 'default-frame-alist '(height . 37))
> 
> that is, the frame height should be less than that of your screen.
> 
> Start Emacs, do C-x 5 2, and tell us whether the heights of the two
> frames differ.

Yes they do.  It looks like default-frame-alist is ignored for the first frame.

	Jan D.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-11 14:01                     ` Stefan Monnier
@ 2007-10-14 16:29                       ` Richard Stallman
  0 siblings, 0 replies; 31+ messages in thread
From: Richard Stallman @ 2007-10-14 16:29 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: rudalics, jan.h.d, emacs-devel

    > The obvious (but more difficult) would be to read all startup lisp before
    > creating the first frame.

    It's not that difficult.  The first frame created is `terminal-frame' anyway
    and this one does not need any information from .emacs.  Currently we create
    a second (X11, or w32, or mac, or tty) frame and delete the `terminal-frame'
    before reading the .emacs but we could do that later.

One concern here is handling errors.  Error messages that occur before
the really intended frame is set up kill Emacs.  That is implemented
in cmd_error_internal.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-10-11 18:03                 ` Jan Djärv
@ 2007-12-25 17:17                   ` Richard Stallman
  2007-12-27 19:10                     ` martin rudalics
  0 siblings, 1 reply; 31+ messages in thread
From: Richard Stallman @ 2007-12-25 17:17 UTC (permalink / raw)
  To: Jan Djärv; +Cc: rudalics, emacs-devel

Does this bug still happen for you, or has it been fixed?

    > Create a one-line .emacs like
    > 
    > (add-to-list 'default-frame-alist '(height . 37))
    > 
    > that is, the frame height should be less than that of your screen.
    > 
    > Start Emacs, do C-x 5 2, and tell us whether the heights of the two
    > frames differ.

    Yes they do.  It looks like default-frame-alist is ignored for the first frame.

This does not fail for me.  When I start Emacs with just

    (add-to-list 'default-frame-alist '(height . 15))

in .emacs, it makes a 15-line frame.  I tested that in Emacs 22
and in the trunk, and it makes a 15-line frame in both.
(The frame starts out the default size and then shrinks, of course.)

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-12-25 17:17                   ` Richard Stallman
@ 2007-12-27 19:10                     ` martin rudalics
  2007-12-28 13:56                       ` Richard Stallman
  0 siblings, 1 reply; 31+ messages in thread
From: martin rudalics @ 2007-12-27 19:10 UTC (permalink / raw)
  To: rms; +Cc: Jan Djärv, emacs-devel

 > Does this bug still happen for you, or has it been fixed?
 >
 >     > Create a one-line .emacs like
 >     >
 >     > (add-to-list 'default-frame-alist '(height . 37))
 >     >
 >     > that is, the frame height should be less than that of your screen.
 >     >
 >     > Start Emacs, do C-x 5 2, and tell us whether the heights of the two
 >     > frames differ.
 >
 >     Yes they do.  It looks like default-frame-alist is ignored for the first frame.
 >
 > This does not fail for me.  When I start Emacs with just
 >
 >     (add-to-list 'default-frame-alist '(height . 15))
 >
 > in .emacs, it makes a 15-line frame.  I tested that in Emacs 22
 > and in the trunk, and it makes a 15-line frame in both.
 > (The frame starts out the default size and then shrinks, of course.)

The size of the initial frame seems correct because initial frames get
the same height regardless of whether they have a tool-bar or not (if
they didn't we'd probably have another bug).  Hence, I conclude that
additional frames created _after_ the initial frame are too high.
Commenting out the following stretch from frame.c fixes the bug for me.

   /* This used to be done _before_ calling x_figure_window_size, but
      since the height is reset here, this was really a no-op.  I
      assume that moving it here does what Gerd intended (although he
      no longer can remember what that was...  ++KFS, 2003-03-25.  */

   /* Add the tool-bar height to the initial frame height so that the
      user gets a text display area of the size he specified with -g or
      via .Xdefaults.  Later changes of the tool-bar height don't
      change the frame size.  This is done so that users can create
      tall Emacs frames without having to guess how tall the tool-bar
      will get.  */
   if (toolbar_p && FRAME_TOOL_BAR_LINES (f))
     {
       int margin, relief, bar_height;

       relief = (tool_bar_button_relief >= 0
		? tool_bar_button_relief
		: DEFAULT_TOOL_BAR_BUTTON_RELIEF);

       if (INTEGERP (Vtool_bar_button_margin)
	  && XINT (Vtool_bar_button_margin) > 0)
	margin = XFASTINT (Vtool_bar_button_margin);
       else if (CONSP (Vtool_bar_button_margin)
	       && INTEGERP (XCDR (Vtool_bar_button_margin))
	       && XINT (XCDR (Vtool_bar_button_margin)) > 0)
	margin = XFASTINT (XCDR (Vtool_bar_button_margin));
       else
	margin = 0;

       bar_height = DEFAULT_TOOL_BAR_IMAGE_HEIGHT + 2 * margin + 2 * relief;
       FRAME_LINES (f) += (bar_height + FRAME_LINE_HEIGHT (f) - 1) / FRAME_LINE_HEIGHT (f);
     }

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-12-27 19:10                     ` martin rudalics
@ 2007-12-28 13:56                       ` Richard Stallman
  2007-12-28 20:06                         ` martin rudalics
  0 siblings, 1 reply; 31+ messages in thread
From: Richard Stallman @ 2007-12-28 13:56 UTC (permalink / raw)
  To: martin rudalics; +Cc: jan.h.d, emacs-devel

Perhaps I have misunderstood the nature of the problem.  I thought the
problem was that the height in default-frame-alist was being ignored
entirely for the first frame, from these words:

     >     Yes they do.  It looks like default-frame-alist is ignored for the first frame.

My experience is that it is not ignored.

You're now talking about a completely different problem:

    Commenting out the following stretch from frame.c fixes the bug for me.

       /* This used to be done _before_ calling x_figure_window_size, but
	  since the height is reset here, this was really a no-op.  I
	  assume that moving it here does what Gerd intended (although he
	  no longer can remember what that was...  ++KFS, 2003-03-25.  */
       ....

I think that change causes another bug.  The height in lines of an
Emacs frame is not supposed to include the tool bar.  If you create a
frame and specify 40 lines, you should get 40 lines of text, plus a
tool bar.

    The size of the initial frame seems correct because initial frames get
    the same height regardless of whether they have a tool-bar or not (if
    they didn't we'd probably have another bug).

Could you explain that precisely?  Perhaps that special feature for -g
and the initial frame needs to be implemented in a different place.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-12-28 13:56                       ` Richard Stallman
@ 2007-12-28 20:06                         ` martin rudalics
  2007-12-28 23:09                           ` Robert J. Chassell
  0 siblings, 1 reply; 31+ messages in thread
From: martin rudalics @ 2007-12-28 20:06 UTC (permalink / raw)
  To: rms; +Cc: jan.h.d, emacs-devel

 > Perhaps I have misunderstood the nature of the problem.  I thought the
 > problem was that the height in default-frame-alist was being ignored
 > entirely for the first frame, from these words:
 >
 >      >     Yes they do.  It looks like default-frame-alist is ignored for the first frame.
 >
 > My experience is that it is not ignored.
 >
 > You're now talking about a completely different problem:

Your experience and mine are identic but the problem goes as follows:
The OP observed that the height of the initial (first) frame differs
from that of additional frames.  We found out that their heights differ
by the height of the toolbar, that is, additional frames are by the
height of the toolbar higher than the initial (first) frame.  So if you
say that the initial frame is good, the bug must be with the additional
frames and _not_ with the initial one.  Hence we've been discussing the
problem with different premises.

 >     Commenting out the following stretch from frame.c fixes the bug for me.
 >
 >        /* This used to be done _before_ calling x_figure_window_size, but
 > 	  since the height is reset here, this was really a no-op.  I
 > 	  assume that moving it here does what Gerd intended (although he
 > 	  no longer can remember what that was...  ++KFS, 2003-03-25.  */
 >        ....
 >
 > I think that change causes another bug.  The height in lines of an
 > Emacs frame is not supposed to include the tool bar.  If you create a
 > frame and specify 40 lines, you should get 40 lines of text, plus a
 > tool bar.

As Jan said this code is executed exclusively with the native toolbar,
hence we would have to judge whether not executing that code DTRT for
toolkit scrollbars.  With the native toolbar, this code is not executed
for the initial frame (at least not here), hence we would have to judge
whether not executing that code for the initial frame does TRT.  Here,
this code gets executed only for additional frames and iff I have
toolbars enabled.

 >     The size of the initial frame seems correct because initial frames get
 >     the same height regardless of whether they have a tool-bar or not (if
 >     they didn't we'd probably have another bug).
 >
 > Could you explain that precisely?  Perhaps that special feature for -g
 > and the initial frame needs to be implemented in a different place.

Please recall that I didn't use -g to produce the bug, just a
single-line .emacs containing

(add-to-list 'default-frame-alist '(height . 37))

What I wanted to express above is that my initial Emacs frame has the
same height regardless of whether I have toolbars enabled or not.  Also,
the heights of my frames never change when I switch toolbars on and off.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-12-28 20:06                         ` martin rudalics
@ 2007-12-28 23:09                           ` Robert J. Chassell
  2007-12-28 23:51                             ` martin rudalics
  0 siblings, 1 reply; 31+ messages in thread
From: Robert J. Chassell @ 2007-12-28 23:09 UTC (permalink / raw)
  To: martin rudalics; +Cc: jan.h.d, rms, emacs-devel

    Today's GNU Emacs CVS snapshot, Fri, 2007 Dec 28  11:02 UTC
    GNU Emacs 23.0.50.12 (i686-pc-linux-gnu, GTK+ Version 2.12.1)
    started with:

      /usr/local/src/emacs/src/emacs -Q -D \
       --eval '(setq-default mode-line-buffer-identification
                             (quote (#("%14b" 0 4 (face (:weight normal))))))' \
       -fn "-Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO8859-1" \
       --visit=/usr/local/bin/emacs-test                               \
       --eval "(setq frame-title-format '(\"Emacs test:  %b\"))"       \
       --eval '(set-frame-name "Emacs test")'                          \
       --eval '(switch-to-buffer "*scratch*")'                         \
       --eval '(emacs-version t)'


martin rudalics said,

    What I wanted to express above is that my initial Emacs frame has
    the same height regardless of whether I have toolbars enabled or
    not.

That is a different issue than RMS was dealing  with.  As far as I
understand, he was concerned with the number of lines of text.

Toolbars on my system take up two lines and the heights of an Emacs
instance in X, the first frame, changes, although at the moment the
number of text lines stay the same regardless whether I evaluate

    (tool-bar-mode 0)
or
    (tool-bar-mode 1)

(As I said earlier, the height of the first frame changes.)

I like it that the number of lines of text stays the same.

--
    Robert J. Chassell                          GnuPG Key ID: 004B4AC8
    bob@rattlesnake.com                         bob@gnu.org
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-12-28 23:09                           ` Robert J. Chassell
@ 2007-12-28 23:51                             ` martin rudalics
  2008-01-05 11:22                               ` Jan Djärv
  0 siblings, 1 reply; 31+ messages in thread
From: martin rudalics @ 2007-12-28 23:51 UTC (permalink / raw)
  To: bob; +Cc: jan.h.d, rms, emacs-devel

 >     What I wanted to express above is that my initial Emacs frame has
 >     the same height regardless of whether I have toolbars enabled or
 >     not.
 >
 > That is a different issue than RMS was dealing  with.  As far as I
 > understand, he was concerned with the number of lines of text.

Apparently for Gtk+ users the height changes but the number of visible
lines remains the same when toggling `tool-bar-mode'.  For native
toolbar users the height remains the same and the number of visible
lines changes.  I reported this only to explain the behavior of Emacs
with native toolbars as seen here.

 > Toolbars on my system take up two lines and the heights of an Emacs
 > instance in X, the first frame, changes, although at the moment the
 > number of text lines stay the same regardless whether I evaluate
 >
 >     (tool-bar-mode 0)
 > or
 >     (tool-bar-mode 1)
 >
 > (As I said earlier, the height of the first frame changes.)
 >
 > I like it that the number of lines of text stays the same.

If I had two Emacs frames aligned one above the other I probably would
mind if one of them changed size without being asked to do so.  But I
can't really tell because I don't use toolbars and never count the
number of lines of frames - my Emcas always runs full screen.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2007-12-28 23:51                             ` martin rudalics
@ 2008-01-05 11:22                               ` Jan Djärv
  2008-01-05 13:08                                 ` martin rudalics
  0 siblings, 1 reply; 31+ messages in thread
From: Jan Djärv @ 2008-01-05 11:22 UTC (permalink / raw)
  To: martin rudalics; +Cc: bob, rms, emacs-devel

martin rudalics skrev:
>>     What I wanted to express above is that my initial Emacs frame has
>>     the same height regardless of whether I have toolbars enabled or
>>     not.
>>
>> That is a different issue than RMS was dealing  with.  As far as I
>> understand, he was concerned with the number of lines of text.
> 
> Apparently for Gtk+ users the height changes but the number of visible
> lines remains the same when toggling `tool-bar-mode'.  For native
> toolbar users the height remains the same and the number of visible
> lines changes.  I reported this only to explain the behavior of Emacs
> with native toolbars as seen here.

Yes this is one of many symptoms of bugs in the Emacs-Gtk+ resize code.  Is is
mainly due to my misunderstanding of both Gtk+ resize handling and Emacs
resize handling.  This time two wrongs did not make one right :-).

I'm working on it, but there are still some time before I can check something in.

	Jan D.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2008-01-05 11:22                               ` Jan Djärv
@ 2008-01-05 13:08                                 ` martin rudalics
  2008-01-05 17:33                                   ` Jan Djärv
  2008-01-06  8:08                                   ` Richard Stallman
  0 siblings, 2 replies; 31+ messages in thread
From: martin rudalics @ 2008-01-05 13:08 UTC (permalink / raw)
  To: Jan Djärv; +Cc: bob, rms, emacs-devel

 >>Apparently for Gtk+ users the height changes but the number of visible
 >>lines remains the same when toggling `tool-bar-mode'.  For native
 >>toolbar users the height remains the same and the number of visible
 >>lines changes.  I reported this only to explain the behavior of Emacs
 >>with native toolbars as seen here.
 >
 >
 > Yes this is one of many symptoms of bugs in the Emacs-Gtk+ resize code.  Is is
 > mainly due to my misunderstanding of both Gtk+ resize handling and Emacs
 > resize handling.  This time two wrongs did not make one right :-).

Did we already settle on a "right" way to do this?  Robert expressed the
desire to keep the number of text lines invariant.  ISTR others wanted
the size of the frame on the screen stay invariant.  At least a similar
issue was recently brought up for menubars.  Finally, I'm interested how
changes of menu-bar-lines/tool-bar-lines are supposed to be applied and
handled - I'm quite lost in this context.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2008-01-05 13:08                                 ` martin rudalics
@ 2008-01-05 17:33                                   ` Jan Djärv
  2008-01-05 18:08                                     ` Drew Adams
  2008-01-06  8:08                                   ` Richard Stallman
  1 sibling, 1 reply; 31+ messages in thread
From: Jan Djärv @ 2008-01-05 17:33 UTC (permalink / raw)
  To: martin rudalics; +Cc: bob, rms, emacs-devel

martin rudalics skrev:
>>>Apparently for Gtk+ users the height changes but the number of visible
>>>lines remains the same when toggling `tool-bar-mode'.  For native
>>>toolbar users the height remains the same and the number of visible
>>>lines changes.  I reported this only to explain the behavior of Emacs
>>>with native toolbars as seen here.
>>
>>
>> Yes this is one of many symptoms of bugs in the Emacs-Gtk+ resize
> code.  Is is
>> mainly due to my misunderstanding of both Gtk+ resize handling and Emacs
>> resize handling.  This time two wrongs did not make one right :-).
> 
> Did we already settle on a "right" way to do this?  Robert expressed the
> desire to keep the number of text lines invariant.  ISTR others wanted
> the size of the frame on the screen stay invariant.  At least a similar
> issue was recently brought up for menubars.  Finally, I'm interested how
> changes of menu-bar-lines/tool-bar-lines are supposed to be applied and
> handled - I'm quite lost in this context.
> 
> 

I don't think we did.  But frame size can't in general stay constant as we
have wm hints.  For example, I have 13 pixels of text height.  That gives min
resize 13.  The tool bar is 36 pixels.  So when the tool bar goes, either we
increase text size by 3 (== 39, 3 additional pixels) or by 2 (26, decrease by
10 pixels).

I'll implement whatever seems easiest, and then people can suggest
alternatives after that.

	Jan D.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* RE: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2008-01-05 17:33                                   ` Jan Djärv
@ 2008-01-05 18:08                                     ` Drew Adams
  2008-01-05 22:42                                       ` Robert J. Chassell
  2008-01-05 23:00                                       ` Jan Djärv
  0 siblings, 2 replies; 31+ messages in thread
From: Drew Adams @ 2008-01-05 18:08 UTC (permalink / raw)
  To: Jan Djärv, martin rudalics; +Cc: bob, rms, emacs-devel

> > Did we already settle on a "right" way to do this?  Robert expressed the
> > desire to keep the number of text lines invariant.  ISTR others wanted
> > the size of the frame on the screen stay invariant.  At least a similar
> > issue was recently brought up for menubars.  Finally, I'm interested how
> > changes of menu-bar-lines/tool-bar-lines are supposed to be applied and
> > handled - I'm quite lost in this context.
>
> I don't think we did.  But frame size can't in general stay constant as
> we have wm hints.  For example, I have 13 pixels of text height.
> That gives min resize 13.  The tool bar is 36 pixels.  So when the
> tool bar goes, either we increase text size by 3 (== 39, 3
> additional pixels) or by 2 (26, decrease by 10 pixels).
>
> I'll implement whatever seems easiest, and then people can suggest
> alternatives after that.

The fact that it is not always possible to maintain exactly the same overall
frame size because that size is not always an integral number of characters
is not a reason to not try to maintain the size as closely as possible.
Please don't simply "implement whatever seems easiest".

It is likely that there are different preferences for this based on
different uses of frames.

Someone who typically uses frames (e.g. non-nil pop-up-frames) might want
the frame size to remain the same (or as close to that as possible). Such a
user will want to fit frames, tile them, and perform other operations for
which the overall (outside) frame dimensions are significant. I and some
others are in this group.

Someone else might want the text content within the frame to remain
constant. Such a user might not care so much about the outside frame
dimensions.

The right approach to this is to provide a user option for it. There is no
sense arguing over which frame-size treatment is best in this regard, and it
does not make sense to simply code "whatever seems easiest" and then
entertain suggestions for changes after that.

Let's try to get it right now, and provide an option to let users choose the
behavior they want - different users use frames differently. We know that
character size does not always map exactly to pixel size, but that's not a
reason to not try to DTRT.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2008-01-05 18:08                                     ` Drew Adams
@ 2008-01-05 22:42                                       ` Robert J. Chassell
  2008-01-05 23:00                                       ` Jan Djärv
  1 sibling, 0 replies; 31+ messages in thread
From: Robert J. Chassell @ 2008-01-05 22:42 UTC (permalink / raw)
  To: emacs-devel

    Someone else might want the text content within the frame to
    remain constant.  Such a user might not care so much about the
    outside frame dimensions.

    The right approach to this is to provide a user option for it. ...

Drew is right.  I want `the text content within the frame to remain
constant.'  Others may want the frame size to remain constant and not
care about the text.  

I will set the user option in my .emacs file after I learn about it
unless the default is to keep the text content constant.  (However, I
note that Emacs advertises itself as a text editor rather than as a
Window manager; so maybe it will keep a good default, although its
self-description is wrong.  A program that is more than a text editor,
such as a Window manager that has footnotes in Texinfo, may not keep
`the text content constant' by default.  I should add, that from
Texinfo mode in Emacs, you can directly create seven output formats
from a single source file.  That is better than any other formatter or
`word processor' I have seen with the exception of DebianDoc, which
converts to Texinfo.)

-- 
    Robert J. Chassell                          GnuPG Key ID: 004B4AC8
    bob@rattlesnake.com                         bob@gnu.org
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2008-01-05 18:08                                     ` Drew Adams
  2008-01-05 22:42                                       ` Robert J. Chassell
@ 2008-01-05 23:00                                       ` Jan Djärv
  1 sibling, 0 replies; 31+ messages in thread
From: Jan Djärv @ 2008-01-05 23:00 UTC (permalink / raw)
  To: Drew Adams; +Cc: martin rudalics, emacs-devel, rms, bob



Drew Adams skrev:
>>> Did we already settle on a "right" way to do this?  Robert expressed the
>>> desire to keep the number of text lines invariant.  ISTR others wanted
>>> the size of the frame on the screen stay invariant.  At least a similar
>>> issue was recently brought up for menubars.  Finally, I'm interested how
>>> changes of menu-bar-lines/tool-bar-lines are supposed to be applied and
>>> handled - I'm quite lost in this context.
>> I don't think we did.  But frame size can't in general stay constant as
>> we have wm hints.  For example, I have 13 pixels of text height.
>> That gives min resize 13.  The tool bar is 36 pixels.  So when the
>> tool bar goes, either we increase text size by 3 (== 39, 3
>> additional pixels) or by 2 (26, decrease by 10 pixels).
>>
>> I'll implement whatever seems easiest, and then people can suggest
>> alternatives after that.
> 
> The fact that it is not always possible to maintain exactly the same overall
> frame size because that size is not always an integral number of characters
> is not a reason to not try to maintain the size as closely as possible.
> Please don't simply "implement whatever seems easiest".

This is a Gtk+ issue that taken up a lot of my time lately.  Unless you are 
willing to contribute code, the easiest thing is what I will do.  This is code 
that is hard to get right, so making a complex solution is out of the question.

	Jan D.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2008-01-05 13:08                                 ` martin rudalics
  2008-01-05 17:33                                   ` Jan Djärv
@ 2008-01-06  8:08                                   ` Richard Stallman
  2008-01-06 20:19                                     ` Stefan Monnier
  1 sibling, 1 reply; 31+ messages in thread
From: Richard Stallman @ 2008-01-06  8:08 UTC (permalink / raw)
  To: martin rudalics; +Cc: bob, jan.h.d, emacs-devel

    Did we already settle on a "right" way to do this?  Robert expressed the
    desire to keep the number of text lines invariant.  ISTR others wanted
    the size of the frame on the screen stay invariant.

Ideally, the tool bar ought to work like the menu bar:
turning it on or off should not affect the height of the text area.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [Fwd: Frame Height Different for Default Frame and Additional Frames]
  2008-01-06  8:08                                   ` Richard Stallman
@ 2008-01-06 20:19                                     ` Stefan Monnier
  2008-01-06 20:45                                       ` [Fwd: Frame Height Different for Default Frame and AdditionalFrames] Drew Adams
  0 siblings, 1 reply; 31+ messages in thread
From: Stefan Monnier @ 2008-01-06 20:19 UTC (permalink / raw)
  To: rms; +Cc: martin rudalics, jan.h.d, emacs-devel, bob

>     Did we already settle on a "right" way to do this?  Robert expressed the
>     desire to keep the number of text lines invariant.  ISTR others wanted
>     the size of the frame on the screen stay invariant.

> Ideally, the tool bar ought to work like the menu bar:
> turning it on or off should not affect the height of the text area.

Well, in my world, the The Right Thing is to not change the size of the
frame unless explicitly requested, so adding a toolbar or menubar should
reduce the amount of text displayed.

But clearly in other worlds, the convention is different (e.g. macosx
users probably expect the toolbar to change the size of the whole frame).


        Stefan

^ permalink raw reply	[flat|nested] 31+ messages in thread

* RE: [Fwd: Frame Height Different for Default Frame and AdditionalFrames]
  2008-01-06 20:19                                     ` Stefan Monnier
@ 2008-01-06 20:45                                       ` Drew Adams
  0 siblings, 0 replies; 31+ messages in thread
From: Drew Adams @ 2008-01-06 20:45 UTC (permalink / raw)
  To: Stefan Monnier, rms; +Cc: martin rudalics, jan.h.d, bob, emacs-devel

> >     Did we already settle on a "right" way to do this?  Robert 
> >     expressed the desire to keep the number of text lines invariant.
> >     ISTR others wanted the size of the frame on the screen stay
> >     invariant.
> 
> > Ideally, the tool bar ought to work like the menu bar:
> > turning it on or off should not affect the height of the text area.
> 
> Well, in my world, the The Right Thing is to not change the size of the
> frame unless explicitly requested, so adding a toolbar or menubar should
> reduce the amount of text displayed.
> 
> But clearly in other worlds, the convention is different (e.g. macosx
> users probably expect the toolbar to change the size of the whole frame).

That's what I said too:

   It is likely that there are different preferences for this
   based on different uses of frames.

We should have a user option for this:

   The right approach to this is to provide a user option for it.
   There is no sense arguing over which frame-size treatment is best
   in this regard

^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2008-01-06 20:45 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <002501c8044b$fcc95390$6100000a@intermedinc.internal>
     [not found] ` <4701F8AC.6070900@gmx.at>
     [not found]   ` <E1Iewxc-0004U8-CC@fencepost.gnu.org>
2007-10-08 21:12     ` [Fwd: Frame Height Different for Default Frame and Additional Frames] martin rudalics
2007-10-09 20:02       ` Richard Stallman
2007-10-09 21:25         ` martin rudalics
2007-10-10  5:55           ` Jan Djärv
2007-10-10  6:51             ` martin rudalics
2007-10-10  7:39               ` Jan Djärv
2007-10-10  7:50                 ` Jason Rumney
2007-10-10 20:41                 ` martin rudalics
2007-10-11  6:15                   ` Jan Djärv
2007-10-11  8:52                     ` martin rudalics
2007-10-11 14:01                     ` Stefan Monnier
2007-10-14 16:29                       ` Richard Stallman
2007-10-11  5:19             ` Richard Stallman
2007-10-11  8:52               ` martin rudalics
2007-10-11 18:03                 ` Jan Djärv
2007-12-25 17:17                   ` Richard Stallman
2007-12-27 19:10                     ` martin rudalics
2007-12-28 13:56                       ` Richard Stallman
2007-12-28 20:06                         ` martin rudalics
2007-12-28 23:09                           ` Robert J. Chassell
2007-12-28 23:51                             ` martin rudalics
2008-01-05 11:22                               ` Jan Djärv
2008-01-05 13:08                                 ` martin rudalics
2008-01-05 17:33                                   ` Jan Djärv
2008-01-05 18:08                                     ` Drew Adams
2008-01-05 22:42                                       ` Robert J. Chassell
2008-01-05 23:00                                       ` Jan Djärv
2008-01-06  8:08                                   ` Richard Stallman
2008-01-06 20:19                                     ` Stefan Monnier
2008-01-06 20:45                                       ` [Fwd: Frame Height Different for Default Frame and AdditionalFrames] Drew Adams
2007-10-10 21:03           ` [Fwd: Frame Height Different for Default Frame and Additional Frames] Richard Stallman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).