unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: "Jan D." <jan.h.d@swipnet.se>
To: martin rudalics <rudalics@gmx.at>
Cc: 张海君 <netjune@icloud.com>, 19482@debbugs.gnu.org
Subject: bug#19482: Changing to big font cause display problem
Date: Tue, 24 Feb 2015 20:09:57 +0100	[thread overview]
Message-ID: <7F209FD7-19DD-4F47-A8BF-98E88EC65FCB@swipnet.se> (raw)
In-Reply-To: <54EAC726.8090208@swipnet.se>

Hi.

> 23 feb 2015 kl. 07:22 skrev Jan D. <jan.h.d@swipnet.se>:
> 
> Hi.
> 
> martin rudalics skrev den 2015-02-22 19:52:
>> >> IIUC FRAME_OUTER_TO_INNER_DIFF_Y is the height of title bar, tool bar
>> >
>> > Only for external toolbar.
>> 
>> ... and external menubar, yes.  BTW, when do we get the menu bar in the
>> title bar?  One line less to count ...
> 
> Sadly there is no standard for how to do this.  Ubuntu (and others) seems to be moving to having a global menubar a'la MacOS/OSX.
> Then you never have to count it.  I think this is semiautomatic, but I wonder if Emacs takes it into account, I'll have to test it.

I could not get a definite answer to this as the semiautomatic move of the menubar doesn't happen anymore.  Maybe I need a setting.

> 
>> 
>> > The define has just not been updated with something like
>> FRAME_TOOLBAR_WIDTH:
>> >
>> > #define FRAME_OUTER_TO_INNER_DIFF_X(f) \
>> >       ((f)->output_data.x->x_pixels_outer_diff)
>> > #define FRAME_OUTER_TO_INNER_DIFF_Y(f)          \
>> >       ((f)->output_data.x->y_pixels_outer_diff   \
>> >        + FRAME_MENUBAR_HEIGHT (f) + FRAME_TOOLBAR_HEIGHT (f))
>> 
>> Sure.  But I probably can't change it without changing its clients as
>> well.
> 
> I'm not sure.  There are only a few usages, and I think not taking toolbal width into account is probably a bug.  Will check this also.

It is a bug, popups will popup at the wrong position.  We need to track all four sides.
I'm implementing that.

> 
>> 
>> >>    And at
>> >> least here a maximized frame shows decorations only on two orthogonal
>> >> sides so the above is certainly not always correct.  Do you have any
>> >> better ideas?
>> >
>> > You can always compute them on the fly with something similar to what
>> x_real_positions does and take into account the lower right corner as
>> well as the upper left corner.
>> 
>> I don't get the borders reported separately so I always distribute the
>> space occupied by the one visible border among it and the non-existent
>> border.  Not a great deal obviously, but I'm sure that mouse position
>> calculations are off by a few pixels in that case.
>> 
> 
> What I meant was that x_real_positions gets the upper left corner for the outer window and the inner window and calls the difference OUTER_TO_INNER_DIFF.  But you can take the width/height of the outer/inner window and also calculate exactly the diff of all sides.

But I still think you are confused about what is outer and inner window here.  In the macro OUTER_TO_INNER_DIFF outer refers to the window that the windowmanager puts as Emacs parent.  "Inner" here is actually the outermost Emacs created X window, and "outer" is the window manager window.
So outer contains the title bar, but this:

  outer_width = FRAME_PIXEL_WIDTH (f) + 2 * border;
  outer_height = (FRAME_PIXEL_HEIGHT (f)
		  + FRAME_OUTER_TO_INNER_DIFF_Y (f)
		  + FRAME_OUTER_TO_INNER_DIFF_X (f));


is just plain wrong, because for you are calculating something that does not correspond to any real window.  For example, on Gnome 3 the window manager puts in a window that is 10 pixels wider on both sides, so it can do shadow effects.  But the border is still one or zero pixels.

So what you have calculated is not the window manager window sizes, because inner_to_outer width is not taken into account.  There actually is no window with width FRAME_PIXEL_WIDTH + 2 * border in the Gnome 3 case.  For Gtk+/Motif/Lucid, we create a window outside the frame (i.e. text editing part) that contains the tool bar if external, menu bar and scroll bar.  But that window is not this size either, the width would in general contain the scroll bar for example.

So what are you trying to calculate?  Is it the window manager window geometry, or the geometry of the largest Emacs created window?

	Jan D.






  reply	other threads:[~2015-02-24 19:09 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. [this message]
2015-02-25  7:34                                     ` martin rudalics
2015-02-25  9:20                                       ` Jan D.
2015-02-25 10:33                                         ` martin rudalics
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=7F209FD7-19DD-4F47-A8BF-98E88EC65FCB@swipnet.se \
    --to=jan.h.d@swipnet.se \
    --cc=19482@debbugs.gnu.org \
    --cc=netjune@icloud.com \
    --cc=rudalics@gmx.at \
    /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).