unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#46464: 27.1; wide images are hidden partially at the right edge of window
@ 2021-02-12 15:11 ynyaaa
  2021-02-13 13:01 ` Eli Zaretskii
  0 siblings, 1 reply; 7+ messages in thread
From: ynyaaa @ 2021-02-12 15:11 UTC (permalink / raw)
  To: 46464


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))





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#46464: 27.1; wide images are hidden partially at the right edge of window
  2021-02-12 15:11 bug#46464: 27.1; wide images are hidden partially at the right edge of window ynyaaa
@ 2021-02-13 13:01 ` Eli Zaretskii
  2021-02-14 14:30   ` ynyaaa
  0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2021-02-13 13:01 UTC (permalink / raw)
  To: ynyaaa; +Cc: 46464

> From: ynyaaa@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.





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#46464: 27.1; wide images are hidden partially at the right edge of window
  2021-02-13 13:01 ` Eli Zaretskii
@ 2021-02-14 14:30   ` ynyaaa
  2021-02-14 16:10     ` Eli Zaretskii
  0 siblings, 1 reply; 7+ messages in thread
From: ynyaaa @ 2021-02-14 14:30 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 46464

Eli Zaretskii <eliz@gnu.org> writes:

>> From: ynyaaa@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.





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#46464: 27.1; wide images are hidden partially at the right edge of window
  2021-02-14 14:30   ` ynyaaa
@ 2021-02-14 16:10     ` Eli Zaretskii
  2021-02-15 13:40       ` ynyaaa
  0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2021-02-14 16:10 UTC (permalink / raw)
  To: ynyaaa; +Cc: 46464

> From: ynyaaa@gmail.com
> Cc: 46464@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?





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#46464: 27.1; wide images are hidden partially at the right edge of window
  2021-02-14 16:10     ` Eli Zaretskii
@ 2021-02-15 13:40       ` ynyaaa
  2021-02-15 15:41         ` Eli Zaretskii
  0 siblings, 1 reply; 7+ messages in thread
From: ynyaaa @ 2021-02-15 13:40 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 46464

Eli Zaretskii <eliz@gnu.org> writes:

>> From: ynyaaa@gmail.com
>> Cc: 46464@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))))





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#46464: 27.1; wide images are hidden partially at the right edge of window
  2021-02-15 13:40       ` ynyaaa
@ 2021-02-15 15:41         ` Eli Zaretskii
  2021-02-16 18:56           ` Eli Zaretskii
  0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2021-02-15 15:41 UTC (permalink / raw)
  To: ynyaaa; +Cc: 46464

> From: ynyaaa@gmail.com
> Cc: 46464@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.





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#46464: 27.1; wide images are hidden partially at the right edge of window
  2021-02-15 15:41         ` Eli Zaretskii
@ 2021-02-16 18:56           ` Eli Zaretskii
  0 siblings, 0 replies; 7+ messages in thread
From: Eli Zaretskii @ 2021-02-16 18:56 UTC (permalink / raw)
  To: ynyaaa; +Cc: 46464-done

> Date: Mon, 15 Feb 2021 17:41:15 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 46464@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.





^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-02-16 18:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-02-12 15:11 bug#46464: 27.1; wide images are hidden partially at the right edge of window ynyaaa
2021-02-13 13:01 ` Eli Zaretskii
2021-02-14 14:30   ` ynyaaa
2021-02-14 16:10     ` Eli Zaretskii
2021-02-15 13:40       ` ynyaaa
2021-02-15 15:41         ` Eli Zaretskii
2021-02-16 18:56           ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).