unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* frame-pixel-(width|height) is incorrect
@ 2007-12-20 22:49 Drew Adams
  2007-12-21  9:17 ` Jason Rumney
  0 siblings, 1 reply; 7+ messages in thread
From: Drew Adams @ 2007-12-20 22:49 UTC (permalink / raw
  To: Bug-Gnu-Emacs

emacs -Q

I've checked the pixel size of Emacs frames with a couple of tools on
Windows, and these functions both return incorrect results:
frame-pixel-width, frame-pixel-height.

For the default frame from emacs -Q, the size I measure is this:

width 688 pixels
height 742 pixels, including the title bar, which seems to be about 29

The Emacs functions return 680 and 688 pixels for the frame width and
height, respectively. I suppose that the title bar is not counted in
the frame-pixel-height (why not, BTW?), but even accounting for that
the value is incorrect.

This has an impact on frame-size calculation for operations such as
tiling frames across and down the display.

Please correct the frame pixel sizes. If you use Windows, you can pick
up free ($) tools (e.g. mbruler) to measure the actual sizes; I don't
know about tools for other platforms.


In GNU Emacs 22.1.1 (i386-mingw-nt5.1.2600)
 of 2007-06-02 on RELEASE
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4) --cflags -Ic:/gnuwin32/include'





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

* Re: frame-pixel-(width|height) is incorrect
  2007-12-20 22:49 frame-pixel-(width|height) is incorrect Drew Adams
@ 2007-12-21  9:17 ` Jason Rumney
  2007-12-21 10:46   ` David Reitter
  2007-12-28  0:14   ` Drew Adams
  0 siblings, 2 replies; 7+ messages in thread
From: Jason Rumney @ 2007-12-21  9:17 UTC (permalink / raw
  To: Drew Adams; +Cc: Bug-Gnu-Emacs

Drew Adams wrote:
> emacs -Q
>
> I've checked the pixel size of Emacs frames with a couple of tools on
> Windows, and these functions both return incorrect results:
> frame-pixel-width, frame-pixel-height.
>   
They return results consistent with their documentation.





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

* Re: frame-pixel-(width|height) is incorrect
  2007-12-21  9:17 ` Jason Rumney
@ 2007-12-21 10:46   ` David Reitter
  2007-12-21 10:50     ` Jason Rumney
  2007-12-28  0:14   ` Drew Adams
  1 sibling, 1 reply; 7+ messages in thread
From: David Reitter @ 2007-12-21 10:46 UTC (permalink / raw
  To: Jason Rumney; +Cc: Bug-Gnu-Emacs, Drew Adams

On 21 Dec 2007, at 09:17, Jason Rumney wrote:

> Drew Adams wrote:
>> emacs -Q
>>
>> I've checked the pixel size of Emacs frames with a couple of tools on
>> Windows, and these functions both return incorrect results:
>> frame-pixel-width, frame-pixel-height.
>>
> They return results consistent with their documentation.

frame-pixel-width is correct in the Carbon port.

frame-pixel-height returns a value that is too low, as it doesn't  
contain the title bar. This seems consistent across the platforms,  
from what I hear, but it is annoying nevertheless.

The documentation reads:

"This counts only the height available for text lines, not menu bars  
on window-system Emacs frames."

If you count the tool-bar as "available for text lines", and the title  
bar as part of the non-existant menu bar (on my system), then that is  
indeed correct.

So, either way, it would be useful to have the full height of a frame.  
Consider that (frame-parameter nil 'top) returns the position of the  
top edge, and not the y ordinate of the location where text could  
potentially be displayed in the frame.








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

* Re: frame-pixel-(width|height) is incorrect
  2007-12-21 10:46   ` David Reitter
@ 2007-12-21 10:50     ` Jason Rumney
  2007-12-21 18:41       ` David Reitter
  0 siblings, 1 reply; 7+ messages in thread
From: Jason Rumney @ 2007-12-21 10:50 UTC (permalink / raw
  To: David Reitter; +Cc: Bug-Gnu-Emacs, Drew Adams

David Reitter wrote:
> If you count the tool-bar as "available for text lines", and the title
> bar as part of the non-existant menu bar (on my system), then that is
> indeed correct.
I think it is a bug to count the tool-bar as available for text lines,
but certainly the title bar is not available. The question that needs
answering before making any changes is; what code relies on the current
behaviour?






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

* Re: frame-pixel-(width|height) is incorrect
  2007-12-21 10:50     ` Jason Rumney
@ 2007-12-21 18:41       ` David Reitter
  0 siblings, 0 replies; 7+ messages in thread
From: David Reitter @ 2007-12-21 18:41 UTC (permalink / raw
  To: Jason Rumney; +Cc: Bug-Gnu-Emacs, Drew Adams

On 21 Dec 2007, at 10:50, Jason Rumney wrote:

> David Reitter wrote:
>> If you count the tool-bar as "available for text lines", and the  
>> title
>> bar as part of the non-existant menu bar (on my system), then that is
>> indeed correct.
> I think it is a bug to count the tool-bar as available for text lines,
> but certainly the title bar is not available. The question that needs
> answering before making any changes is; what code relies on the  
> current
> behaviour?

frame-pixel-* are used by dframe, ediff, quail, lucid, and x-dnd.

What I would really need is a function that gives me the total frame  
extensions, in order to place the frame on the screen.

Isn't the pixel size of the text area automatically (* (frame-height)  
(frame-char-height)) anyways? At least that's what it is for me.




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

* RE: frame-pixel-(width|height) is incorrect
  2007-12-21  9:17 ` Jason Rumney
  2007-12-21 10:46   ` David Reitter
@ 2007-12-28  0:14   ` Drew Adams
  2007-12-28 13:56     ` Richard Stallman
  1 sibling, 1 reply; 7+ messages in thread
From: Drew Adams @ 2007-12-28  0:14 UTC (permalink / raw
  To: Bug-Gnu-Emacs; +Cc: David Reitter

> From: Jason Rumney Sent: Friday, December 21, 2007 1:18 AM
> > emacs -Q
> >
> > I've checked the pixel size of Emacs frames with a couple of tools on
> > Windows, and these functions both return incorrect results:
> > frame-pixel-width, frame-pixel-height.
>
> They return results consistent with their documentation.

Well, their doc is pretty skimpy. I'm using Emacs 22.1 (release).

(My concern is for a window-mgr frame, not a terminal frame, BTW.)

The doc strings say only that the functions "return frame's width in pixels"
(or height). Practically useless. The Elisp manual says only: "the height
and width of FRAME, measured in pixels". Just as useless. There is nowhere
any information about which parts of the frame are included.

David quotes the doc as stating that only the height available for text is
counted. Perhaps he has a more recent version of Emacs - I don't see that
doc in Emacs 22.1.

Checking the code, I'm led from `frame-pixel-width' to `x_pixel_width' to
`FRAME_PIXEL_WIDTH' to `FRAME_TEXT_COLS_TO_PIXEL_WIDTH' after several greps.
And there I see this:

#define FRAME_TEXT_COLS_TO_PIXEL_WIDTH(f, cols) \
  (FRAME_COL_TO_PIXEL_X (f, cols) \
   + (f)->scroll_bar_actual_width \
   + FRAME_TOTAL_FRINGE_WIDTH (f)      \
   + FRAME_INTERNAL_BORDER_WIDTH (f))

So, it looks like the doc should say that it is the width of the text area
inside a frame plus the width of the scroll bar (if visible) plus the width
of the internal frame border. Similarly, for height.

I agree with David that these functions, or possibly some other functions,
should give the _outside_ dimensions of the frame.

For this or whatever functions do provide the _outside_ frame dimensions:

If the window-mgr title bar thickness (height) cannot be known, then so be
it - just mention that it includes everything else - but see below for a
better approach. If there is another exception (I don't think there is),
then mention that too. The doc must be explicit about what is measured;
otherwise, it is little help.

In particular, this means that the outside-dimension functions should
include the `border-width' frame parameter, that is, the external frame
border, as well as the internal border.

David gave the reason that outside-dimension functions are needed:
calculating frame sizes and positions. One example is tiling frames.

Another suggestion: If it is indeed impossible for Emacs to obtain the
title-bar thickness (height), then this should be a user option, and its
value should be included in the outside frame dimension calculations. That
way, a user can at least measure the title bar by hand once, customize the
option, and thereafter count on accurate frame-size calculations.

BTW, in my original bug report, I was mistakenly assuming that the functions
frame-pixel-* returned outside dimensions. That is what I am after, whether
by these functions or some new functions.

Thx.





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

* Re: frame-pixel-(width|height) is incorrect
  2007-12-28  0:14   ` Drew Adams
@ 2007-12-28 13:56     ` Richard Stallman
  0 siblings, 0 replies; 7+ messages in thread
From: Richard Stallman @ 2007-12-28 13:56 UTC (permalink / raw
  To: Drew Adams; +Cc: bug-gnu-emacs, dreitter

    So, it looks like the doc should say that it is the width of the text area
    inside a frame plus the width of the scroll bar (if visible) plus the width
    of the internal frame border. Similarly, for height.

I will install something like that in the manual.

    I agree with David that these functions, or possibly some other functions,
    should give the _outside_ dimensions of the frame.

It would be useful to offer that, to the extent it is possible.




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

end of thread, other threads:[~2007-12-28 13:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-12-20 22:49 frame-pixel-(width|height) is incorrect Drew Adams
2007-12-21  9:17 ` Jason Rumney
2007-12-21 10:46   ` David Reitter
2007-12-21 10:50     ` Jason Rumney
2007-12-21 18:41       ` David Reitter
2007-12-28  0:14   ` Drew Adams
2007-12-28 13:56     ` 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).