emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Question about display engine


From: Ergus
Subject: Re: Question about display engine
Date: Fri, 6 Sep 2019 11:31:18 +0200
User-agent: NeoMutt/20180716

On Fri, Sep 06, 2019 at 10:22:48AM +0200, martin rudalics wrote:
Thanks for the new patch.  It applies and Emacs builds here on Windows
without problems.

The issue is actually related with the fact that
extend_face_id is never restarted to face_id when going back from an
extend to a non_extend face between lines (for example when mark is
active and the iterator crosses the pointer to outside the selected
region like in the picture).

The end of the region is a stop position for the iterator.  It can
occur in the middle of a line, so handling this problem at the
beginning of a display line would be neither sufficient nor useful.
When the stop position coinciding with the end of the region is
processed, the extend_face_id has to be reset to some new face_id at
that position.

I'm yet too silly to understand your patch so I cannot figure out
where this should happen.  But the following parts appear somehow
suspicious:

          /* Update the faces id and extend.  */
          it->face_id = new_face_id;

          if (FACE_EXTENSIBLE_P (new_face))
            it->extend_face_id = new_face_id;

At the end of the region this may get you a new_face that is not
extensible.  But that means that you do not reset it->extend_face_id
although you should (IMHO).

Just to make sure that we see the same things: Is my interpretation
correct that in your screenshot you use blue for the region and black
as default background and the regions starts at line 9 of your window?

Yes that's it.

martin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]