From 12d6398c252fece74bef01c111b52bd3c8631b56 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 26 Mar 2025 19:04:16 +0200 Subject: [PATCH] Fix vertical cursor motion with wide images and line numbers * src/xdisp.c (produce_image_glyph): When cropping an image that exceeds the window's right edge, account for the screen estate taken by line-number display. (Bug#77217) (cherry picked from commit 1e68351d56918cd4d7883bcff629f794660a3134) --- src/xdisp.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index 5845f941a8f..fd997f443ea 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -31956,12 +31956,14 @@ produce_image_glyph (struct it *it) word-wrap, unless the image starts at column zero, because wrapping correctly needs the real pixel width of the image. */ if ((it->line_wrap != WORD_WRAP - || it->hpos == 0 + || it->hpos == (0 + (it->lnum_width ? it->lnum_width + 2 : 0)) /* Always crop images larger than the window-width, minus 1 space. */ - || it->pixel_width > it->last_visible_x - FRAME_COLUMN_WIDTH (it->f)) + || it->pixel_width > (it->last_visible_x - it->lnum_pixel_width + - FRAME_COLUMN_WIDTH (it->f))) && (crop = it->pixel_width - (it->last_visible_x - it->current_x), crop > 0) - && (it->hpos == 0 || it->pixel_width > it->last_visible_x / 4)) + && (it->hpos == (0 + (it->lnum_width ? it->lnum_width + 2 : 0)) + || it->pixel_width > it->last_visible_x / 4)) { it->pixel_width -= crop; slice.width -= crop; -- 2.39.5