mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
Fix start-of-box-face display after display and overlay strings
* src/xdisp.c (pop_it): Recompute the 'start_of_box_run_p' flag, like we do in 'handle_fontified_prop', when faces change while iterating over a buffer or string. (Bug#51550)
This commit is contained in:
parent
d1c7ce68ba
commit
c80d2f3d67
1 changed files with 23 additions and 4 deletions
27
src/xdisp.c
27
src/xdisp.c
|
|
@ -6841,6 +6841,7 @@ pop_it (struct it *it)
|
|||
struct iterator_stack_entry *p;
|
||||
bool from_display_prop = it->from_disp_prop_p;
|
||||
ptrdiff_t prev_pos = IT_CHARPOS (*it);
|
||||
int prev_face_id = it->face_id;
|
||||
|
||||
eassert (it->sp > 0);
|
||||
--it->sp;
|
||||
|
|
@ -6876,9 +6877,18 @@ pop_it (struct it *it)
|
|||
|
||||
/* Restore the face_box_p flag, since it could have been
|
||||
overwritten by the face of the object that we just finished
|
||||
displaying. */
|
||||
displaying. Also, set the start_of_box_run_p flag if the
|
||||
change in faces requires that. */
|
||||
if (face)
|
||||
it->face_box_p = face->box != FACE_NO_BOX;
|
||||
{
|
||||
struct face *prev_face = FACE_FROM_ID_OR_NULL (it->f, prev_face_id);
|
||||
|
||||
if (!(it->start_of_box_run_p && prev_face && prev_face->box))
|
||||
it->start_of_box_run_p = (face->box != FACE_NO_BOX
|
||||
&& (prev_face == NULL
|
||||
|| prev_face->box == FACE_NO_BOX));
|
||||
it->face_box_p = face->box != FACE_NO_BOX;
|
||||
}
|
||||
it->object = it->w->contents;
|
||||
}
|
||||
break;
|
||||
|
|
@ -6888,9 +6898,18 @@ pop_it (struct it *it)
|
|||
|
||||
/* Restore the face_box_p flag, since it could have been
|
||||
overwritten by the face of the object that we just finished
|
||||
displaying. */
|
||||
displaying. Also, set the start_of_box_run_p flag if the
|
||||
change in faces requires that. */
|
||||
if (face)
|
||||
it->face_box_p = face->box != FACE_NO_BOX;
|
||||
{
|
||||
struct face *prev_face = FACE_FROM_ID_OR_NULL (it->f, prev_face_id);
|
||||
|
||||
if (!(it->start_of_box_run_p && prev_face && prev_face->box))
|
||||
it->start_of_box_run_p = (face->box != FACE_NO_BOX
|
||||
&& (prev_face == NULL
|
||||
|| prev_face->box == FACE_NO_BOX));
|
||||
it->face_box_p = face->box != FACE_NO_BOX;
|
||||
}
|
||||
it->object = it->string;
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in a new issue