GNU bug report logs - #46464
27.1; wide images are hidden partially at the right edge of window

Previous Next

Package: emacs;

Reported by: ynyaaa <at> gmail.com

Date: Fri, 12 Feb 2021 15:13:01 UTC

Severity: normal

Found in version 27.1

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 46464 in the body.
You can then email your comments to 46464 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#46464; Package emacs. (Fri, 12 Feb 2021 15:13:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to ynyaaa <at> gmail.com:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Fri, 12 Feb 2021 15:13:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: ynyaaa <at> gmail.com
To: bug-gnu-emacs <at> gnu.org
Subject: 27.1; wide images are hidden partially at the right edge of window
Date: Sat, 13 Feb 2021 00:11:26 +0900
Evaluate the form below, 10 images are inserted in one logical line.
The fourth image of the first visual line and the fourth image of the
secodn visual line are hidden partially at the right edge of the window,
where (frame-char-width) => 8 and (window-text-width) => 80.

Also #'previous-line works strangely.
From the end of the 3rd visual line(next to the 2nd image of the line),
type C-p, then the point moves to the 3rd image of the 2nd line,
type C-p, then the point moves to the 1st image of the 2nd line,
type C-p, then the point moves to the 3rd image of the 1st line,
type C-p, then the point moves to the 1st image of the 1st line,
type C-p, then the point moves to the column of the previous line near
the 3rd image.

(let* ((w 200)
       (h 50)
       (form "<svg width=\"%d\" height=\"%d\" version=\"1.1\"
 xmlns=\"http://www.w3.org/2000/svg\">
 <rect x=\"%g\" y=\"%g\" width=\"%g\" height=\"%g\" fill=\"%s\"/>
</svg>")
       (s (propertize "%c" 'face '(:height 10.0))))
  (dotimes (i 10)
    (let* ((color (nth (% i 5) '("red" "green" "blue" "yellow" "orange")))
           (svg (format form w h 0 0 w h color)))
      (insert-image (create-image svg 'svg t :scale 1)))))



In GNU Emacs 27.1 (build 1, x86_64-w64-mingw32)
 of 2020-08-22 built on CIRROCUMULUS
Repository revision: 86d8d76aa36037184db0b2897c434cdaab1a9ae8
Repository branch: HEAD
Windowing system distributor 'Microsoft Corp.', version 10.0.18363
System Description: Microsoft Windows 10 Pro (v10.0.1909.18363.1316)

Recent messages:

Configured using:
 'configure --without-dbus --host=x86_64-w64-mingw32
 --without-compress-install 'CFLAGS=-O2 -static''

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY W32NOTIFY ACL GNUTLS LIBXML2
HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS MODULES THREADS JSON PDUMPER LCMS2 GMP

Important settings:
  value of $LANG: JPN
  locale-coding-system: cp932

Major mode: Emacs-Lisp

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
format-spec rfc822 mml easymenu mml-sec password-cache epa derived epg
epg-config gnus-util rmail rmail-loaddefs text-property-search time-date
subr-x seq byte-opt gv bytecomp byte-compile cconv mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
misearch multi-isearch term/bobcat japan-util tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel dos-w32 ls-lisp
disp-table term/w32-win w32-win w32-vars term/common-win tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame minibuffer cl-generic
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads w32notify w32
lcms2 multi-tty make-network-process emacs)

Memory information:
((conses 16 59623 8847)
 (symbols 48 6128 1)
 (strings 32 17432 1478)
 (string-bytes 1 567630)
 (vectors 16 10820)
 (vector-slots 8 209933 10204)
 (floats 8 21 68)
 (intervals 56 579 0)
 (buffers 1000 12))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46464; Package emacs. (Sat, 13 Feb 2021 13:02:02 GMT) Full text and rfc822 format available.

Message #8 received at 46464 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: ynyaaa <at> gmail.com
Cc: 46464 <at> debbugs.gnu.org
Subject: Re: bug#46464: 27.1;
 wide images are hidden partially at the right edge of window
Date: Sat, 13 Feb 2021 15:01:19 +0200
> From: ynyaaa <at> gmail.com
> Date: Sat, 13 Feb 2021 00:11:26 +0900
> 
> Evaluate the form below, 10 images are inserted in one logical line.
> The fourth image of the first visual line and the fourth image of the
> secodn visual line are hidden partially at the right edge of the window,
> where (frame-char-width) => 8 and (window-text-width) => 80.

This is the intended behavior: Emacs silently crops images that don't
fit on their screen line.

> Also #'previous-line works strangely.
> >From the end of the 3rd visual line(next to the 2nd image of the line),
> type C-p, then the point moves to the 3rd image of the 2nd line,
> type C-p, then the point moves to the 1st image of the 2nd line,
> type C-p, then the point moves to the 3rd image of the 1st line,
> type C-p, then the point moves to the 1st image of the 1st line,
> type C-p, then the point moves to the column of the previous line near
> the 3rd image.

This was a subtle bug, triggered by the fact that one image follows
another where vertical cursor motion is invoked.  Should be fixed now
on the master branch.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46464; Package emacs. (Sun, 14 Feb 2021 14:31:02 GMT) Full text and rfc822 format available.

Message #11 received at 46464 <at> debbugs.gnu.org (full text, mbox):

From: ynyaaa <at> gmail.com
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 46464 <at> debbugs.gnu.org
Subject: Re: bug#46464: 27.1; wide images are hidden partially at the right
 edge of window
Date: Sun, 14 Feb 2021 23:30:27 +0900
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: ynyaaa <at> gmail.com
>> Date: Sat, 13 Feb 2021 00:11:26 +0900
>> 
>> Evaluate the form below, 10 images are inserted in one logical line.
>> The fourth image of the first visual line and the fourth image of the
>> secodn visual line are hidden partially at the right edge of the window,
>> where (frame-char-width) => 8 and (window-text-width) => 80.
>
> This is the intended behavior: Emacs silently crops images that don't
> fit on their screen line.

What means by "images that don't fit on their screen line"?

If a edge of a image is near the right edge of the window,
the image is mostly hidden. It is not preferable.
And if :margin is specified, the image may be hidden completely.

By the way, if :margin is specified, a partial image on the right edge
of the window is displayed with right margin.
It is very misleading.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46464; Package emacs. (Sun, 14 Feb 2021 16:11:01 GMT) Full text and rfc822 format available.

Message #14 received at 46464 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: ynyaaa <at> gmail.com
Cc: 46464 <at> debbugs.gnu.org
Subject: Re: bug#46464: 27.1; wide images are hidden partially at the right
 edge of window
Date: Sun, 14 Feb 2021 18:10:11 +0200
> From: ynyaaa <at> gmail.com
> Cc: 46464 <at> debbugs.gnu.org
> Date: Sun, 14 Feb 2021 23:30:27 +0900
> 
> > This is the intended behavior: Emacs silently crops images that don't
> > fit on their screen line.
> 
> What means by "images that don't fit on their screen line"?

It means the image is wider than the space left on the screen line
from the image's position to the edge of the window.

> If a edge of a image is near the right edge of the window,
> the image is mostly hidden. It is not preferable.

That's how Emacs behaved since v21.

> And if :margin is specified, the image may be hidden completely.
> 
> By the way, if :margin is specified, a partial image on the right edge
> of the window is displayed with right margin.

I don't think I understand what you mean by that.  Can you show a test
case?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46464; Package emacs. (Mon, 15 Feb 2021 13:42:01 GMT) Full text and rfc822 format available.

Message #17 received at 46464 <at> debbugs.gnu.org (full text, mbox):

From: ynyaaa <at> gmail.com
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 46464 <at> debbugs.gnu.org
Subject: Re: bug#46464: 27.1; wide images are hidden partially at the right
 edge of window
Date: Mon, 15 Feb 2021 22:40:56 +0900
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: ynyaaa <at> gmail.com
>> Cc: 46464 <at> debbugs.gnu.org
>> Date: Sun, 14 Feb 2021 23:30:27 +0900
>> 
>> > This is the intended behavior: Emacs silently crops images that don't
>> > fit on their screen line.
>> 
>> What means by "images that don't fit on their screen line"?
>
> It means the image is wider than the space left on the screen line
> from the image's position to the edge of the window.
>
>> If a edge of a image is near the right edge of the window,
>> the image is mostly hidden. It is not preferable.
>
> That's how Emacs behaved since v21.

If the width of the iamge is 200 pixels, typing some characters at the
beginning of the same line, the image moves to the right and gets hidden
gradually and is wrapped to the next visual line.

If the width of the image is 150 pixels, the entire image does not get
hidden and it is wrapped when the image right edge is going to across
the right edge of the window.

What is the difference?

>> And if :margin is specified, the image may be hidden completely.
>> 
>> By the way, if :margin is specified, a partial image on the right edge
>> of the window is displayed with right margin.
>
> I don't think I understand what you mean by that.  Can you show a test
> case?

Evaluating the form below, four images are supposed to be displayed in
the first visual line. But the fourth image is invisible. Similar for
the second visual line.

If ':margin 5' is replaced with ':margin 20', three images are displayed
in the first to third visual lines. Third image in each visual line is
truncated at the x-coordinate 20 pixels apart from the right edge of the
window. It looks as if the image is not truncated and is small.

(dotimes (i 10)
  (let* ((w 200) (h 30) (sw 6)
         (color (nth (% i 5) '("red" "green" "blue" "yellow" "orange")))
         (svg (format "<svg width=\"%g\" height=\"%g\"
 version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">
<rect x=\"%g\" y=\"%g\" width=\"%g\" height=\"%g\" stroke=\"%s\"
 stroke-width=\"%g\" fill=\"grey\"/>
</svg>" w h (/ sw 2) (/ sw 2) (- w sw) (- h sw) color sw)))
    (insert-image (create-image svg 'svg t :margin 5 :scale 1))))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46464; Package emacs. (Mon, 15 Feb 2021 15:42:01 GMT) Full text and rfc822 format available.

Message #20 received at 46464 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: ynyaaa <at> gmail.com
Cc: 46464 <at> debbugs.gnu.org
Subject: Re: bug#46464: 27.1; wide images are hidden partially at the right
 edge of window
Date: Mon, 15 Feb 2021 17:41:15 +0200
> From: ynyaaa <at> gmail.com
> Cc: 46464 <at> debbugs.gnu.org
> Date: Mon, 15 Feb 2021 22:40:56 +0900
> 
> >> If a edge of a image is near the right edge of the window,
> >> the image is mostly hidden. It is not preferable.
> >
> > That's how Emacs behaved since v21.
> 
> If the width of the iamge is 200 pixels, typing some characters at the
> beginning of the same line, the image moves to the right and gets hidden
> gradually and is wrapped to the next visual line.
> 
> If the width of the image is 150 pixels, the entire image does not get
> hidden and it is wrapped when the image right edge is going to across
> the right edge of the window.
> 
> What is the difference?

There's a heuristic that changes behavior when the image becomes
wider than 1/4 of the window.  By default, the "emacs -Q" window is
640 pixels wide, so that's what you see.

> >> And if :margin is specified, the image may be hidden completely.
> >> 
> >> By the way, if :margin is specified, a partial image on the right edge
> >> of the window is displayed with right margin.
> >
> > I don't think I understand what you mean by that.  Can you show a test
> > case?
> 
> Evaluating the form below, four images are supposed to be displayed in
> the first visual line. But the fourth image is invisible. Similar for
> the second visual line.
> 
> If ':margin 5' is replaced with ':margin 20', three images are displayed
> in the first to third visual lines. Third image in each visual line is
> truncated at the x-coordinate 20 pixels apart from the right edge of the
> window. It looks as if the image is not truncated and is small.
> 
> (dotimes (i 10)
>   (let* ((w 200) (h 30) (sw 6)
>          (color (nth (% i 5) '("red" "green" "blue" "yellow" "orange")))
>          (svg (format "<svg width=\"%g\" height=\"%g\"
>  version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">
> <rect x=\"%g\" y=\"%g\" width=\"%g\" height=\"%g\" stroke=\"%s\"
>  stroke-width=\"%g\" fill=\"grey\"/>
> </svg>" w h (/ sw 2) (/ sw 2) (- w sw) (- h sw) color sw)))
>     (insert-image (create-image svg 'svg t :margin 5 :scale 1))))

I will look into this and see if this is a bug or intended behavior.

In general, Lisp programs that display wide images should be careful
about these aspects to make sure images aren't clipped and appear in
their entirety.




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Tue, 16 Feb 2021 18:57:02 GMT) Full text and rfc822 format available.

Notification sent to ynyaaa <at> gmail.com:
bug acknowledged by developer. (Tue, 16 Feb 2021 18:57:02 GMT) Full text and rfc822 format available.

Message #25 received at 46464-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: ynyaaa <at> gmail.com
Cc: 46464-done <at> debbugs.gnu.org
Subject: Re: bug#46464: 27.1;
 wide images are hidden partially at the right edge of window
Date: Tue, 16 Feb 2021 20:56:03 +0200
> Date: Mon, 15 Feb 2021 17:41:15 +0200
> From: Eli Zaretskii <eliz <at> gnu.org>
> Cc: 46464 <at> debbugs.gnu.org
> 
> > Evaluating the form below, four images are supposed to be displayed in
> > the first visual line. But the fourth image is invisible. Similar for
> > the second visual line.
> > 
> > If ':margin 5' is replaced with ':margin 20', three images are displayed
> > in the first to third visual lines. Third image in each visual line is
> > truncated at the x-coordinate 20 pixels apart from the right edge of the
> > window. It looks as if the image is not truncated and is small.
> > 
> > (dotimes (i 10)
> >   (let* ((w 200) (h 30) (sw 6)
> >          (color (nth (% i 5) '("red" "green" "blue" "yellow" "orange")))
> >          (svg (format "<svg width=\"%g\" height=\"%g\"
> >  version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">
> > <rect x=\"%g\" y=\"%g\" width=\"%g\" height=\"%g\" stroke=\"%s\"
> >  stroke-width=\"%g\" fill=\"grey\"/>
> > </svg>" w h (/ sw 2) (/ sw 2) (- w sw) (- h sw) color sw)))
> >     (insert-image (create-image svg 'svg t :margin 5 :scale 1))))
> 
> I will look into this and see if this is a bug or intended behavior.

I've looked at the code: it's deliberate.  We truncate the image to
fit within the window, but still leave the margins around it.

So I don't see what else needed to be fixed here, and I'm closing this
bug report.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 17 Mar 2021 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 40 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.