Subject: Re: bug#11068: 24.0.94; Face-remapped background does not extend to end of window

From: Eli Zaretskii <[email-masked]>
Date: Sat, 24 Mar 2012 16:40:37 +0200

> From: Chong Yidong <[email-masked]>
> Cc: [email-masked],  Stefan Monnier <[email-masked]>,  [email-masked]
> Date: Sat, 24 Mar 2012 22:17:41 +0800
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >    /* Face extension extends the background and box of IT->face_id
> >       to the end of the line.  If the background equals the background
> >       of the frame, we don't have to do anything.  */
> >    if (it->face_before_selective_p)
> >      face = FACE_FROM_ID (f, it->saved_face_id);
> > +  else if (it->face_id == DEFAULT_FACE_ID)
> > +    face = default_face;
> >    else
> >      face = FACE_FROM_ID (f, it->face_id);
> 
> This looks a bit strange.  Why is DEFAULT_FACE_ID handled specially
> here?

In my testing, I didn't see the need to do it even for the default
face, because it->face_id is already set to the ID of the remapped
face.  So it's just me being paranoiac.

Because of this condition, immediately below the fragment you cited:

  if (FRAME_WINDOW_P (f)
      && it->glyph_row->displays_text_p
      && face->box == FACE_NO_BOX
      && face->background == FRAME_BACKGROUND_PIXEL (f)
      && !face->stipple
      && !it->glyph_row->reversed_p)
    return;

Any non-default face would already penetrate this condition

> Shouldn't we be checking for face remapping no matter what the
> face_id is?

The remapping takes place before we hit this function, which is at the
end of displaying a line.  So the face is already remapped.