From 67d3881c5f816113b7d34d69c94b5d5d10c9f71f 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) (cherry picked from commit a9661e643b1235e82b7ba0c9c9c2cd8fa533b5a6) --- 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 712994a95fb..ff14efe0c4a 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -6444,7 +6444,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 2e5d306fbb7..9f6754a98ca 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)) -- 2.39.5