unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: martin rudalics <rudalics@gmx.at>
Cc: occitan@esperanto.org, 12419@debbugs.gnu.org
Subject: bug#12419: Mouse click changes layout
Date: Wed, 26 Sep 2012 13:55:29 +0200	[thread overview]
Message-ID: <83a9wdgfri.fsf@gnu.org> (raw)
In-Reply-To: <5062E0ED.3050901@gmx.at>

>  > The number of lines in a window is needed for the display engine to
>  > allocate glyph matrices required to display the window.  Having the
>  > size of each child window at ⌈N/2⌉ will ensure the right dimensions of
>  > the glyph matrices, because even a partially-visible line needs a row
>  > in the matrix.  There are no other restrictions in the display engine,
>  > AFAIK, that require an integral number of lines to be displayed in a
>  > window.
> 
> I suppose so since otherwise we would have seen bugs earlier.  A silly
> question: Does the `display-engine' draw over a previous column/row or
> does it clip it?

Sorry, I don't understand what you mean by "drawing over a previous
column/row".  Which "previous" column/row are we talking about?

>  > Sorry, I don't follow: which mouse code did you have in mind, and why
>  > would it report incongruent results?
> 
> Take make_lispy_position.  It has
> 
>        /* Pixel coordinates relative to the window corner.  */
>        int wx = XINT (x) - WINDOW_LEFT_EDGE_X (w);
>        int wy = XINT (y) - WINDOW_TOP_EDGE_Y (w);
> 
> where
> 
> #define WINDOW_TOP_EDGE_Y(W) \
>    (((WINDOW_MENU_BAR_P (W) || WINDOW_TOOL_BAR_P (W)) \
>      ? 0 : FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W))) \
>     + WINDOW_TOP_EDGE_LINE (W) * WINDOW_FRAME_LINE_HEIGHT (W))
> 
> Now if the lower window of a two windows frame does not start at an
> integral number of lines this will not DTRT.  Or am I missing something?

A window must always start with a fully-visible line (unless it's the
only line), so in that sense a window always starts at an integral
number of lines.  But it doesn't have to _end_ with a fully-visible
line.

Does this explain why the above is not a problem?

>  >> And likely, window resizing will get inconsistent over time.
>  >
>  > Again, please elaborate.
> 
> Consider a two window frame, the upper window has 5 lines the lower
> window has 6 lines but in fact both are shown with 5.5 lines.

Can't happen: a window that displays 5.5 lines must have 6 lines, or
else the glyphs for the last half-line will have no place in the glyph
matrix.

> Now I
> enlarge the upper window by one line.  Currently this makes a 6 to 5
> lines frame.  Would it make a 6.5 to 4.5 frame with the new code or a 6
> to 5 lines frame?

It's up to us.  The easiest (and also the least surprising, IMO) would
be to resize from (5.5, 5.5) to (6.5, 4.5), i.e. by one full line.

>  >> Have you looked at the loop at the end of `fit-window-to-buffer'?  It's
>  >> apparently needed because `count-screen-lines' doesn't return a value
>  >> that's good enough there.
>  >
>  > fit-window-to-buffer tries to avoid partially-visible lines.  That's
>  > not always required, or maybe I don't understand why you need a
>  > function that calculates the number of pixels between two positions.
> 
> For implementing something like `count-screen-lines-to-pixels' and get
> rid of that crazy loop where we calculate `pos-visible-in-window-p' and
> resize the window.

I think pos-visible-in-window-p is what you need.






  reply	other threads:[~2012-09-26 11:55 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-11 22:04 bug#12419: Mouse click changes layout Daniel Pfeiffer
2012-09-12  2:59 ` Eli Zaretskii
2012-09-12  8:09 ` martin rudalics
2012-09-13 20:41   ` Daniel Pfeiffer
2012-09-14  9:00     ` martin rudalics
2012-09-14 10:36       ` Eli Zaretskii
2012-09-14 13:38         ` martin rudalics
2012-09-14 14:10           ` Drew Adams
2012-09-14 15:08             ` martin rudalics
2012-09-14 16:18               ` Drew Adams
2012-09-14 19:14                 ` martin rudalics
2012-09-14 19:40                   ` Drew Adams
2012-09-15  9:51                     ` martin rudalics
2012-09-15 10:31                       ` martin rudalics
2012-09-14 14:53           ` Eli Zaretskii
2012-09-14 15:16             ` martin rudalics
2012-09-14 16:20               ` Drew Adams
2012-09-14 19:14                 ` martin rudalics
2012-09-14 16:56               ` Eli Zaretskii
2012-09-14 19:15                 ` martin rudalics
2012-09-14 20:16                   ` Eli Zaretskii
2012-09-15  9:54                     ` martin rudalics
2012-09-15 10:23                       ` Eli Zaretskii
2012-09-15 10:39                         ` martin rudalics
2012-09-15 11:14                           ` Eli Zaretskii
2012-09-15 12:44                             ` martin rudalics
2012-09-15 13:35                               ` Eli Zaretskii
2012-09-15 14:34                                 ` martin rudalics
2012-09-14 15:45             ` Stefan Monnier
2012-09-14 19:14               ` martin rudalics
2012-09-14 19:56                 ` Stefan Monnier
2012-09-15  9:51                   ` martin rudalics
     [not found]       ` <5055D769.1060804@t-online.de>
2012-09-16 17:45         ` martin rudalics
2012-09-22 20:29           ` Daniel Pfeiffer
2012-09-23  9:21             ` martin rudalics
2012-09-23 21:56               ` Daniel Pfeiffer
2012-09-24  8:17                 ` martin rudalics
2012-09-24 14:33                   ` Eli Zaretskii
2012-09-25  9:58                     ` martin rudalics
2012-09-25 12:09                       ` Eli Zaretskii
2012-09-25 14:12                         ` martin rudalics
2012-09-26  8:22                           ` Eli Zaretskii
2012-09-26 11:03                             ` martin rudalics
2012-09-26 11:55                               ` Eli Zaretskii [this message]
2012-09-26 12:43                                 ` martin rudalics
2012-09-26 13:17                                   ` Eli Zaretskii
2012-09-26 13:44                                     ` martin rudalics
2012-09-26 13:57                                       ` Eli Zaretskii
2012-09-24 22:20                   ` Daniel Pfeiffer
2012-09-25  6:32                     ` Eli Zaretskii
2012-09-25  9:58                     ` martin rudalics
2020-09-13 17:06               ` Lars Ingebrigtsen
2020-12-07 16:43                 ` Lars Ingebrigtsen

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=83a9wdgfri.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=12419@debbugs.gnu.org \
    --cc=occitan@esperanto.org \
    --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).