emacs-devel
[Top][All Lists]
Advanced

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

Re: Identifying the face between STRETCH and right fringe.


From: Robert Pluim
Subject: Re: Identifying the face between STRETCH and right fringe.
Date: Tue, 27 Nov 2018 14:55:23 +0100

Eli Zaretskii <address@hidden> writes:

>> From: Robert Pluim <address@hidden>
>> Cc: address@hidden
>> Date: Tue, 27 Nov 2018 12:02:51 +0100
>> 
>> >   if (FRAME_WINDOW_P (f)
>> >       && MATRIX_ROW_DISPLAYS_TEXT_P (it->glyph_row)
>> >       && face->box == FACE_NO_BOX
>> >       && face->background == FRAME_BACKGROUND_PIXEL (f)
>> > #ifdef HAVE_WINDOW_SYSTEM
>> >       && !face->stipple
>> > #endif
>> >       && !it->glyph_row->reversed_p)
>> >     return;      <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>> >
>> 
>> When we get here, face->background == 1, and FRAME_BACKGROUND_PIXEL ==
>> 0xfffeffff
>> 
>> Looking through nsfns.m, the problem becomes obvious: the NS port uses
>> indices into a color table to specify the background colour of faces,
>> and FRAME_BACKGROUND_PIXEL is an RGBA value.
>
> Why does NS use indices here, and not RGBA values?

Probably because NS doesnʼt really use the RGBA values directly at
all, but uses the indices all the time.

>> Iʼm not sure how best to fix this.
>
> If no better/cleaner idea emerges, how about having an NS-specific
> code here that computed the it->face's background RGBA by indexing
> into the color table, before comparing that with
> FRAME_BACKGROUND_PIXEL?

Thatʼs doable. I had a quick try of the opposite, storing the colour
index from the face in FRAME_BACKGROUND_PIXEL, but that ran into all
sorts of issues with face/frame initialisation order.

Robert



reply via email to

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