unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Jonas Bernoulli <jonas@bernoul.li>
Cc: rudalics@gmx.at, cloos@jhcloos.com, emacs-devel@gnu.org
Subject: Re: size hints and tiling window managers
Date: Sun, 09 Dec 2012 21:36:16 +0200	[thread overview]
Message-ID: <83a9tnc91r.fsf@gnu.org> (raw)
In-Reply-To: <87boe3t4gd.fsf@bernoul.li>

> From: Jonas Bernoulli <jonas@bernoul.li>
> Cc: "James Cloos" <cloos@jhcloos.com>, emacs-devel@gnu.org, rudalics@gmx.at
> Date: Sun, 09 Dec 2012 20:23:30 +0100
> 
> I have attached a screenshot that shows parts of four Emacs frames.  The
> green areas are the X11 window borders and window titles drawn by the
> window manager.  The cyan areas are the fringes.  In the upper left
> window I have marked what I have called the "extra space" in my initial
> report.

Thanks.  I wanted to be sure I understand the problem.

> > Changing the width of the fringes dynamically is easy, actually,
> > because we already do so, albeit triggered by user commands.
> 
> I actually tried that approach.  I calculated the width of (a) and then
> adjusted the width of the fringes accordingly.
> 
> ,----
> | (let ((d (- (frame-pixel-width)
> |             (* (frame-width)
> |                (frame-char-width)))))
> |   (set-frame-parameter (selected-frame) 'left-fringe
> |                        (/ d 2))
> |   (set-frame-parameter (selected-frame) 'right-fringe
> |                        (+ (/ d 2) (% d 2))))
> `----
> 
> The result were wider fringes but the "extra space" did not go away, it
> just changed it's width.

This cannot be done from Lisp, only from C.  Sorry, I should have made
myself clear.

> > Echo area is harder, because it's just a window, so its size must
> > currently be a multiple of the default font's size.  Perhaps we could
> > modify the mode-line width instead, by changing the line-with
> > attribute of the mode-line face.  Can you try that?
> 
> Adjusting the mode-line height would very likely result in the same
> problem as adjusting the fringe width.

Maybe so, but did you actually try that?  The display engine surprised
me more than once.

> > It should be clear that the device-independent stage _must_ produce a
> > glyph for every character, even if that character is only partially
> > visible.  And since the number of glyphs is always integer, you get
> > the limitation of the integral multiple of frame font's size.  IOW,
> > the issue here is _not_ that we cannot draw partially visible
> > character -- we can -- but that the glyph matrix _dimensions_ must be
> > integers.  The current limitation exists because asking the wm to
> > observe the same restrictions was the easiest way of reconciling an
> > internal requirement of integer dimensions of the glyph matrices with
> > the fact that GUI frames are drawn and sized in pixels.
> 
> I understand why the width of the text area has to be an integer and am
> aware that it partially visible characters can be drawn; and why that is
> a good thing.

Actually, the above was written in the hope to make clear that the
width of the text area does _not_ have to be an integer number of
frame font's width units.  The dimensions of the glyph matrix must be
inger, of course, but the last glyph can be only partially visible.
IOW, the matrix dimensions should be computed as the round-up of the
result of dividing the window width by the width of the default font.

> >> From: James Cloos <cloos@jhcloos.com>
> >> Doesn't it just require not setting the .width_inc and .height_inc
> >> members of the size_hints struct in src/xterm.c and src/gtkutil.c,
> >> and editing the .min_width and .min_height code to account for that?
> 
> > Maybe I'm missing something, but all your changes do is refrain from
> > setting the width_inc and height_inc members of the XSizeHints
> > structure.  Can you explain how does this solve the problem?
> 
> It seems that you think the above was written by the same person as the
> original report.

No, I don't think I did.  (Why does that matter, anyway?)

> I agree with you that all this does is to not provide size hints and
> that as a result the display problems that are now limited to wms that
> ignore size hints would instead affect all wms.

OK, so we are in violent agreement.



  reply	other threads:[~2012-12-09 19:36 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-06 18:55 size hints and tiling window managers Jonas Bernoulli
2012-12-07 10:35 ` martin rudalics
2012-12-07 10:45   ` Eli Zaretskii
2012-12-08  1:42   ` James Cloos
2012-12-08  9:01     ` Eli Zaretskii
2012-12-09 19:23       ` Jonas Bernoulli
2012-12-09 19:36         ` Eli Zaretskii [this message]
2012-12-15 23:33           ` Jonas Bernoulli
2012-12-16  4:42             ` Eli Zaretskii
2012-12-11  8:07       ` Giorgos Keramidas
2012-12-11  8:10         ` Eli Zaretskii
2012-12-08  9:15     ` Jan Djärv

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=83a9tnc91r.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=cloos@jhcloos.com \
    --cc=emacs-devel@gnu.org \
    --cc=jonas@bernoul.li \
    --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).