unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: martin rudalics <rudalics@gmx.at>
To: "Jan D." <jan.h.d@swipnet.se>
Cc: 19482@debbugs.gnu.org
Subject: bug#19482: Changing to big font cause display problem
Date: Wed, 25 Feb 2015 11:33:05 +0100	[thread overview]
Message-ID: <54EDA4E1.2060304@gmx.at> (raw)
In-Reply-To: <54ED93C5.7020307@swipnet.se>

 >> For the purpose of `x-frame-geometry' the outer window of a frame on X
 >> is the one returned by FRAME_OUTER_WINDOW.  The inner window is the one
 >> whose size is given by FRAME_PIXEL_WIDTH and FRAME_PIXEL_HEIGHT.
 >
 > Then you should never need to bother with _OUTER_TO_INNER_DIFF.

Then how do I get the size of the outer window (the size of the object
returned by FRAME_OUTER_WINDOW)?

 >> IIUC the only problem is whether the "window manager window" does
 >> contain the external toolbar/mmenubar.
 >
 > It never does.  It only contains the title bar.

Are you sure?  External menu and tool bars bars are normally in between
title bar and the inner window so how can they not be counted?

 >>  The title bar and the external
 >> borders are definitely part of the window manager window.
 >
 > The title bar is, but borders are not.  It is entirely possible to set border on any X window, regardless of where it is in the hierarchy.
 > So the external borders Emacs sets is on the outmost Emacs window, not on the window manager window.

Where does Emacs set external borders?  Do we really control that?

 > You must specify what you mean by outer and
 > inner.

I did that and it's still cited at the top of this post.

 > FRAME_OUTER_TO_INNER_DIFF_Y gives the diff between the outmost
 > Emacs created window and the window manager window.

No.  It's the diff between the _top edge_ of the outmost Emacs created
window and that of the window manager window (using your parlance).
What's missing is the diff between the _bottom edge_ of the outmost
created window and that of the window manager window.

 >>  I don't know how to get the difference between the
 >> bottom edge of the Emacs window and the bottom edge of the outer window.
 >> So I approximate.  This approximation obviously goes wrong when the left
 >> and bottom borders are not the same size.  Can you tell me a better way?
 >

 > As I said, I'm implementing this.  But it seems you don't need this.
 > If you are only interested in the size of the Emacs created outmost
 > window, OUTER_TO_INNER_DIFF does not apply.

I am interested in the size of the "window manager window".

 > Only borders do.

I also need title bar, external tool and menu bar.

 >>  > So what you have calculated is not the window manager window sizes,
 >>  > because inner_to_outer width is not taken into account.
 >>
 >> FRAME_OUTER_TO_INNER_DIFF_X gives me the offset of the left edge of the
 >> inner window wrt the outer window.
 >
 > Again, define inner and outer.  We are using confusing terminology.
 > I suggest
 > window manager window
 > Outmost Emacs created window.
 > Inner Emacs created window.

The last one is not needed in this discussion.  Can we agree that your
"window manager window" is the one returned by FRAME_OUTER_WINDOW?  And
that the "outmost Emacs created window" is the one whose sizes are
specified by FRAME_PIXEL_WIDTH and FRAME_PIXEL_HEIGHT?  If so, then

"outer window" is equivalent to "window manager window"

and

"inner window" is equivalent to "outmost Emacs created window"

 >> Are you sure?  Does FRAME_OUTER_TO_INNER_DIFF_X not include the extra 10
 >> pixels you mentioned above?
 >
 > Yes they do.

Then my calculation should handle this case (and obviously seems to fail
for the external border at the bottom of such a frame).

 >> That would be devastating.  Scroll bars are part of the inner window.
 >
 > Not in the X sense, they are attached to the outmost Emacs created
 > window.  Thats one of the reasons we have that window, the other is
 > external menubar and external tool bar.

But their size is counted in the "inner window" aka "outmost Emacs
created window".  Otherwise we could not really handle a frame with
side-by-side windows where two or more scrollbars would have to be
counted.

 > Only Emacs native scrollbar are attached to the inner Emacs window,

I fail to understand you.  IMHO all scrollbars are attached to the
"inner window".  Scrollbars are part of an Emacs "window" not of an
Emacs "frame" on graphical systems.  To my knowledge, external scroll
bars exist only when embedding the Emacs frame somewhere else, for
example, on a terminal.

 > as well as non-external (i.e. text) menu and non-external toolbar.

These are part of the inner window.

 > But for frame-inner-size you subtract menu and tool bar.  So this is
 > not the size of the largest Emacs created window.

You're right.  What I earlier said about the value of 'frame-inner-size'
was probably misleading.  Let's forget about 'frame-inner-size' for the
moment, it's too confusing.

 > What are you doing with these sizes?

Give applications a possibility to calculate the maximimum size of a
frame so that it remains entirely visible within the work area of its
display.  This could be used, for example, to guarantee that setting the
default font doesn't make a frame larger than the display.

Also I want the sizes of external tool and menu bar for debugging things
like the various maximized/fullsize variants.

martin





  reply	other threads:[~2015-02-25 10:33 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-01 15:21 bug#19482: Changing to big font cause display problem 张海君
2015-02-13 18:28 ` martin rudalics
2015-02-18 11:19   ` 张海君
2015-02-18 14:05     ` martin rudalics
2015-02-19  1:59       ` 张海君
2015-02-19  6:57         ` martin rudalics
2015-02-20 10:23           ` 张海君
2015-02-20 18:21             ` martin rudalics
2015-02-21  1:33               ` 张海君
2015-02-21 11:44                 ` martin rudalics
2015-02-22  2:57                   ` 张海君
2015-02-22 10:00                     ` martin rudalics
2015-02-22 10:54                       ` 张海君
2015-02-22 11:32                         ` martin rudalics
2015-02-22 12:27                           ` 张海君
2015-02-22 17:09                             ` martin rudalics
2015-02-23  2:11                               ` 张海君
2015-02-22 16:27                         ` Jan D.
2015-02-22 17:10                           ` martin rudalics
2015-02-22 17:43                             ` Jan D.
2015-02-22 18:52                               ` martin rudalics
2015-02-23  6:22                                 ` Jan D.
2015-02-24 19:09                                   ` Jan D.
2015-02-25  7:34                                     ` martin rudalics
2015-02-25  9:20                                       ` Jan D.
2015-02-25 10:33                                         ` martin rudalics [this message]
2015-02-25 15:27                                           ` Jan D.
2015-02-25 17:33                                             ` martin rudalics
2015-02-25 18:25                                               ` Jan D.
2015-02-25 19:00                                                 ` martin rudalics
2015-02-25 20:22                                                   ` Jan D.
2015-02-27  8:30                                                     ` martin rudalics
2015-02-27 17:49                                                       ` Jan D.
2015-02-25 19:17                                                 ` Jan D.
2015-02-27  8:30                                                   ` martin rudalics
2015-02-27 17:52                                                     ` Jan D.
2015-02-27 19:49                                                       ` martin rudalics
2015-02-27 20:29                                                         ` Jan D.
2015-03-01 15:14                                                         ` martin rudalics
2015-03-01 16:18                                                           ` Jan D.
2015-03-10 14:36                                     ` 张海君
2015-03-10 18:47                                       ` martin rudalics
2015-03-12  5:14                                         ` Jan D.
2015-03-12 10:13                                           ` martin rudalics
2015-03-12 16:52                                             ` Eli Zaretskii
2015-03-12 18:21                                             ` Jan D.

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54EDA4E1.2060304@gmx.at \
    --to=rudalics@gmx.at \
    --cc=19482@debbugs.gnu.org \
    --cc=jan.h.d@swipnet.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).