From a9661e643b1235e82b7ba0c9c9c2cd8fa533b5a6 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 2 Apr 2025 16:12:03 +0300 Subject: [PATCH] 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) --- src/dispnew.c | 6 +++++- src/xdisp.c | 9 --------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/dispnew.c b/src/dispnew.c index 6083a558064..440b1ba83b9 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -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 diff --git a/src/xdisp.c b/src/xdisp.c index 886f070753f..2c676c09827 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -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))