Subject: bug#28605: 26.0.60; Part of leftmost character hidden

From: Ola Nilsson <[email-masked]>
Date: Mon, 2 Oct 2017 11:18:47 +0200

On Fri, Sep 29, 2017 at 8:18 PM, martin rudalics <[email-masked]> wrote:
>>> You mean that the scroll bar from the window on the left affects the
>>> things displayed in the window on the right?
>>
>> Yes, the scroll bar affects the window on both sides. It's only the frame
>> edge
>> with no scroll bar that shows a fringe.
>
> Can you please be a bit more precise: How would the scroll bar affect
> the window on _both_ sides?  Does the scroll bar also affect the
> contents of the window it belongs to?

If the frame contains three side-by-side windows and scroll bars on
the right I expect to see (from left to right):

frame border
left fringe for window one
window one
right fringe for window one
scroll bar for window one
right fringe for window two
window two
left fringe for window two
scroll bar for window two
right fringe for window three
window three
left fringe  for window three
scroll bar for window three
frame border

Of all the fringes, only the left fringe of window one is visible.
Using scroll bars on the left, only the right fringe of window three
is visible.
In both cases, characters that are next to non-visible/hidden fringes
are partially hidden.
I'm attaching two screenshots that should show this.

I bit the bullet and did a git bisect:

36cf0791ba75ee16dfbedfe437567ec6dd945b8a is the first bad commit
commit 36cf0791ba75ee16dfbedfe437567ec6dd945b8a
Author: Lars Ingebrigtsen <[email-masked]>
Date:   Sun Jul 16 16:50:57 2017 +0200
    Remove usage of the GDK_SCALE variable

    * src/gtkutil.c (xg_get_gdk_scale): Remove.
    (xg_get_default_scrollbar_height)
    (xg_get_default_scrollbar_width): Pass in a frame to check for
    scaling.
    (xg_frame_set_char_size): Use the API for querying scale
    instead of looking at the GDK_SCALE variable.
    (xg_get_default_scrollbar_width): Ditto.
    (xg_get_default_scrollbar_height): Ditto.
    (xg_update_scrollbar_pos): Ditto.

    * src/xfns.c (x_set_scroll_bar_default_height): Pass in the
    frame to get the width.

I also played with the dividers and horizontal scroll bars.

The horizontal scroll bars are not visibla at all with scaling on.
Dividers on the right fixed the hidden character problem but not the
hidden fringes,

I attach some screenshots of this as well.

>> The hidpi scaling in gnome works only so far, and I'm not sure all of gtk
>> is aware of the setting. But then I know next to nothing about gtk.
>> The menu-bar and scroll-bars get decent size, but I select a larger font
>> for emacs using X resources (turned off for the report). I noticed
>> yesterday that the fringes are dis-proportionally narrow and the fringe
>> symbols almost unreadable.
>
> On a frame with such bad fringes please do
>
> M-: (window--dump-frame) RET

This is with emacs -Q --no-x-resources, dividers off, horizontal scrollbars off.

frame pixel: 2034 x 466   cols/lines: 226 x 25   units: 9 x 18
frame text pixel: 1992 x 466   cols/lines: 221 x 25
tool: 0  scroll: 26/0  fringe: 16  border: 0  right: 0  bottom: 0

#<window 5>   parent: nil
pixel left: 0   top: 0   size: 2034 x 448   new: 448
char left: 0   top: 0   size: 226 x 25   new: 25
normal: 1.0 x 1.0   new: nil

#<window 3 on *scratch*>   parent: #<window 5>
pixel left: 0   top: 0   size: 1020 x 448   new: 448
char left: 0   top: 0   size: 113 x 25   new: 25
normal: 0.5 x 1.0   new: nil
body pixel: 978 x 430   char: 108 x 23
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 26  divider: 0
height header-line: 0  mode-line: 18  divider: 0

#<window 6 on *scratch*>   parent: #<window 5>
pixel left: 1020   top: 0   size: 1014 x 448   new: 448
char left: 113   top: 0   size: 113 x 25   new: 25
normal: 0.5 x 1.0   new: nil
body pixel: 972 x 430   char: 108 x 23
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 26  divider: 0
height header-line: 0  mode-line: 18  divider: 0

#<window 4 on  *Minibuf-0*>   parent: nil
pixel left: 0   top: 448   size: 2034 x 18   new: 0
char left: 0   top: 25   size: 226 x 1   new: 1
normal: 1.0 x 1.0   new: 0
body pixel: 1992 x 18   char: 221 x 1
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 26  divider: 0
height header-line: 0  mode-line: 0  divider: 0

-- 
Ola Nilsson