More thorough fix for image slices on mode/header-line

* src/xdisp.c (note_mode_line_or_margin_highlight): Remove
correction of DX and DY due to image slices, as this is now done
in 'mode_line_string'.
* src/dispnew.c (mode_line_string): Make DX and DY account for
image slices.  (Bug#77429)
This commit is contained in:
Eli Zaretskii 2025-04-02 16:12:03 +03:00
parent 9cfc01056e
commit a9661e643b
2 changed files with 5 additions and 10 deletions

View file

@ -6447,7 +6447,11 @@ mode_line_string (struct window *w, enum window_part part,
struct image *img;
img = IMAGE_OPT_FROM_ID (WINDOW_XFRAME (w), glyph->u.img_id);
if (img != NULL)
*object = img->spec;
{
*object = img->spec;
x0 += glyph->slice.img.x;
y0 += glyph->slice.img.y;
}
y0 -= row->ascent - glyph->ascent;
}
#endif

View file

@ -35864,15 +35864,6 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y,
#ifdef HAVE_WINDOW_SYSTEM
if (IMAGEP (object))
{
if (glyph != NULL && glyph->type == IMAGE_GLYPH)
{
struct image *img = IMAGE_OPT_FROM_ID (f, glyph->u.img_id);
if (img != NULL && IMAGEP (img->spec))
{
dx += glyph->slice.img.x;
dy += glyph->slice.img.y;
}
}
Lisp_Object image_map, hotspot;
if ((image_map = plist_get (XCDR (object), QCmap),
!NILP (image_map))