unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: "martin rudalics" <rudalics@gmx.at>, "Jan Djärv" <jan.h.d@swipnet.se>
Cc: emacs-devel@gnu.org
Subject: Re: Changes in frame/window code
Date: Mon, 28 Jul 2014 17:25:08 +0300	[thread overview]
Message-ID: <83egx5h86z.fsf@gnu.org> (raw)
In-Reply-To: <53D656BB.3010201@gmx.at>

> Date: Mon, 28 Jul 2014 15:57:15 +0200
> From: martin rudalics <rudalics@gmx.at>
> CC: emacs-devel@gnu.org
> 
>  > If you include the space on the left, then the width of an R2L display
>  > line is always exactly equal to the window width.  This is how the
>  > display engine computes the width of the stretch glyph that represents
>  > "the space on the left".
> 
> But if that R2L line starts on the right of the right window edge it's
> larger, I presume.

You mean, if it's hscrolled?  Yes, of course -- exactly like an L2R
line.

I feel there's some misunderstanding here, because I don't believe
you'd ask about such trivia.  What am I missing?  What's bothering
you?

Perhaps it will help if I say (something that should be obvious, but
maybe it's only obvious to me...) that an R2L line behaves wrt
hscrolling the same as an L2R line, except that it is reversed on
display.  E.g., when the amount of hscroll gets larger, and R2L line
moves to the right, thus removing from sight the first (rightmost on
display) characters of the line.

>  > If you want the line width without the stretch, then you calculate it
>  > exactly like with L2R lines: columns and line widths are computed in
>  > the logical order.
> 
> Hmmm...  That would mean my calculations in
> 
>        whole = move_it_to (&it, -1, INT_MAX, window_box_height (w), -1,
> 			  MOVE_TO_X | MOVE_TO_Y);
> 
> of set_horizontal_scroll_bar have a flaw.

No, I don't think there's a flaw.  The move_it_* family of functions
doesn't know about reversal of R2L lines on display, they think an R2L
line is displayed starting at the left margin of the window.  See the
commentary about that at the beginning of xdisp.c.

>  >> IIUC this means that the slider width must be calculated paragraph-wise
>  >> and position and size of the slider are meaningful only with respect to
>  >> the paragraph point is currently in.
>  >
>  > Yes.  But that is true for strictly L2R text as well, no?  I mean, the
>  > size of the scroll-bar thumb should depend on the width of the line at
>  > point, right?
> 
> No.  The slider size repesents the width of the window with respect to
> the longest line shown in the window.  Try moving point through the
> first column within a window - the slider size should not change.

Then I don't see why you think this should change when there's
bidirectional text in the buffer.  The same arguments work in that
case as well.  R2L lines do not affect the window width in any way
that L2R lines don't.

>  > It doesn't work when you drag the slider.  When you drag the slider,
>  > the text is scrolled in the wrong direction.  The underlying problem
>  > is that the slider starts in a wrong position -- it should be all the
>  > way to the right, not to the left.  AFAIU, this can only be fixed on
>  > the C level.
> 
> Is the size of the slider correct in the sense described above?

Yes.

> Then fixing the position should not be that difficult.

I never said it was difficult, just that it has to be on the C level,
not on the Lisp level, where I fixed the clicks on the scroll bar.

>  > (Btw, shouldn't GTK scroll bars already support bidirectional text out
>  > of the box?  Perhaps you need to set some flag(s) to get that.)
> 
> No idea.

Maybe Jan (CC'ed) can help us out.

> In any case I would have to tell GTK whether the "current text"
> (whatever that is) is L2R or R2L I suppose.

Yes, but we have current-bidi-paragraph-direction for that.



  reply	other threads:[~2014-07-28 14:25 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-22 13:42 Changes in frame/window code martin rudalics
2014-07-23 10:45 ` Dmitry Antipov
2014-07-23 12:48   ` martin rudalics
2014-07-23 15:05     ` set-frame-height glitch [Was: Re: Changes in frame/window code] Dmitry Antipov
2014-07-23 15:36       ` martin rudalics
2014-07-23 15:26     ` Changes in frame/window code martin rudalics
2014-07-23 16:14       ` martin rudalics
2014-07-23 10:59 ` Dmitry Antipov
2014-07-23 12:48   ` martin rudalics
2014-07-27 13:32 ` martin rudalics
2014-07-27 14:50   ` Jan Djärv
2014-07-27 18:14     ` martin rudalics
2014-07-27 14:50   ` Eli Zaretskii
2014-07-27 18:07     ` Eli Zaretskii
2014-07-27 18:19       ` martin rudalics
2014-07-28  4:48         ` Dmitry Antipov
2014-07-28  9:27           ` martin rudalics
2014-07-28 18:22             ` Hint on Xaw3d scroll bar colors issue [Was: Re: Changes in frame/window code] Dmitry Antipov
2014-07-29  9:21               ` martin rudalics
2014-07-29 11:27                 ` Dmitry Antipov
2014-07-29 14:01                   ` martin rudalics
2014-07-29 15:42                     ` Jan Djärv
2014-07-29 16:54                       ` Dmitry Antipov
2014-07-29 17:17                         ` Jan Djärv
2014-07-30 16:44                       ` martin rudalics
2014-07-29 16:43                     ` Bingo [Re: Hint on Xaw3d scroll bar colors issue [Was: Re: Changes in frame/window code]] Dmitry Antipov
2014-07-29 17:14                       ` Jan Djärv
2014-07-30 16:44                       ` martin rudalics
2014-07-29  9:19           ` Changes in frame/window code martin rudalics
2014-07-29 11:28             ` Dmitry Antipov
     [not found]         ` <83tx62hane.fsf@gnu.org>
2014-07-28  9:26           ` martin rudalics
2014-07-28 13:38             ` Eli Zaretskii
2014-07-28 13:57               ` martin rudalics
2014-07-28 14:25                 ` Eli Zaretskii [this message]
2014-07-28 17:27                   ` martin rudalics
2014-07-28 18:15                     ` Eli Zaretskii
2014-07-29  9:20                       ` martin rudalics
2014-07-29  9:41                         ` Eli Zaretskii
2014-07-29  9:55                           ` Eli Zaretskii
2014-07-29 10:47                             ` martin rudalics
2014-07-29 10:23                           ` Eli Zaretskii
2014-07-29 10:47                             ` martin rudalics
2014-07-29 11:33                               ` Eli Zaretskii
2014-07-29 14:02                                 ` martin rudalics
2014-07-29 14:51                                   ` Eli Zaretskii
2014-07-29 15:43                                     ` martin rudalics
2014-07-29 16:14                                       ` Eli Zaretskii
2014-07-29 18:23                                         ` martin rudalics
2014-07-29 18:34                                           ` Eli Zaretskii
2014-07-30 16:05                                             ` martin rudalics
2014-07-30 16:27                                               ` Eli Zaretskii
2014-07-30 16:45                                                 ` martin rudalics
2014-07-30 17:20                                                   ` Eli Zaretskii
2014-07-30 17:36                                                     ` martin rudalics
2014-07-30 17:53                                                       ` Eli Zaretskii
2014-07-31  8:49                                                         ` martin rudalics
2014-07-31 10:06                                                           ` Eli Zaretskii
2014-07-31 10:09                                                           ` martin rudalics
2014-07-31 11:06                                                             ` Eli Zaretskii
2014-07-31 11:35                                                               ` martin rudalics
2014-08-01  9:40                                                                 ` Eli Zaretskii
2014-08-01 10:25                                                                   ` martin rudalics
2014-08-01 13:12                                                                     ` Eli Zaretskii
2014-08-01 15:29                                                                       ` martin rudalics
2014-08-01 16:33                                                                         ` Eli Zaretskii
     [not found]                                                                           ` <53EE2CD5.50603@gmx.a>
2014-08-15 15:52                                                                           ` martin rudalics
2014-08-15 16:40                                                                             ` Eli Zaretskii
2014-08-16  9:35                                                                               ` martin rudalics
2014-08-16 11:29                                                                                 ` Eli Zaretskii
     [not found]                                                                                   ` <53EF609C.2090303@gmx>
2014-08-16 13:46                                                                                   ` martin rudalics
2014-08-16 14:43                                                                                     ` Eli Zaretskii
2014-08-16 16:07                                                                                       ` martin rudalics
2014-08-16 16:09                                                                                         ` martin rudalics
2014-08-16 16:19                                                                                           ` martin rudalics
2014-08-17 15:13                                                                                     ` Eli Zaretskii
2014-08-18  8:31                                                                                       ` martin rudalics
2014-08-18 15:00                                                                                         ` Eli Zaretskii
2014-08-18 16:11                                                                                           ` martin rudalics
2014-08-18 16:22                                                                                             ` Eli Zaretskii
2014-08-19 15:15                                                                                               ` Eli Zaretskii
2014-08-20 14:45                                                                                                 ` Eli Zaretskii
2014-08-20 15:32                                                                                                   ` martin rudalics
2014-08-20 15:32                                                                                                 ` martin rudalics
2014-08-20 15:49                                                                                                   ` Eli Zaretskii
2014-08-28  9:40                                                                                                   ` martin rudalics
2014-08-28 15:10                                                                                                     ` Eli Zaretskii
2014-08-28 19:05                                                                                                       ` martin rudalics
2014-08-28 19:15                                                                                                         ` Eli Zaretskii
2014-08-29  9:00                                                                                                           ` martin rudalics
2014-08-29  9:53                                                                                                             ` Eli Zaretskii
2014-08-31 15:48                                                                                                               ` Eli Zaretskii
2014-08-31 16:22                                                                                                                 ` martin rudalics
2014-08-28 15:56                                                                                                     ` Glenn Morris
2014-08-28 19:04                                                                                                       ` martin rudalics
2014-07-29 20:35                                           ` Jan Djärv
2014-07-29 10:44                           ` martin rudalics
2014-07-29 15:29                   ` Jan Djärv
2014-07-29 16:34                     ` Eli Zaretskii
2014-07-31 16:18             ` Stefan Monnier
2014-07-31 16:37               ` Tassilo Horn
2014-07-31 16:53                 ` martin rudalics
2014-08-27 17:13                   ` Drew Adams
2014-07-31 17:32                 ` Eli Zaretskii
2014-07-31 16:38               ` Eli Zaretskii
2014-07-31 16:53               ` martin rudalics
2014-09-03 16:17                 ` martin rudalics
2014-09-04 18:30                   ` Glenn Morris
2014-09-05 10:47                     ` martin rudalics
2014-09-05 17:14                       ` Glenn Morris
2014-07-27 18:15     ` martin rudalics
2014-07-27 17:14   ` Stefan Monnier
2014-07-27 18:15     ` martin rudalics
2014-07-27 20:28   ` Glenn Morris
2014-08-05  1:42   ` Jay Belanger
2014-08-05  8:38     ` martin rudalics
2014-08-05 14:37       ` Jay Belanger
2014-08-05 15:45         ` martin rudalics

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=83egx5h86z.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=jan.h.d@swipnet.se \
    --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).