Subject: bug#18990: 25.0.50; Scroll bar display problems

From: Stephen Berman <[email-masked]>
Date: Sat, 08 Nov 2014 17:04:23 +0100

On Sat, 08 Nov 2014 16:14:31 +0100 martin rudalics <[email-masked]> wrote:

>> This is not what I observe: I have no setting for the scroll bar in a
>> Gtk config file, but when I start emacs with -Q --eval
>> "(modify-all-frames-parameters '((scroll-bar-width . 7)))", then the
>> scroll bar is displayed thin on the right, unlike when I make it be on
>> the left, and the right fringe is not overlaid by the scroll bar like the
>> left fringe is; see the attached screen shot.  The thin scroll bar looks
>> crappy and clearly is not being properly modified as a toolkit widget,
>
> In the attached screenshot the left scroll bar is displayed in its
> default width (you didn't tell us that value so far)

With -Q (frame-parameters) includes this: (scroll-bar-width . 16).  With
the above invocation (frame-parameters) instead has (scroll-bar-width . 7).

>                                                      partially
> overlaying the left fringe of the window on the right.

Ah, indeed.  I hadn't noticed that, only that the right fringe of the
left window is not hidden.

>                                                         The right scroll
> bar is cropped at the external border (by the window manager).

That possibility didn't occur to me.  Is there some command I can call,
or some other way to convince myself that this is what is happening (not
that I don't believe you, I'd just like to understand it).  And why does
it happen on the right but not on the left (nor on the right side of a
non-right window)?

>> but just as clearly Emacs is able to modify it.
>
> You mean that Emacs can move the slider?

I meant Emacs can make it thinner, since it didn't occur to me that the
appearance of the right scroll bar could be due to the WM.

>> I guess the easiest
>> solution would be to make modifying the Gtk scroll bar a noop.
>
> The width and the height, yes.  The position can be modified without
> problems.

Of course, I only meant the width (also the height of the horizontal
scroll bar).

>> I hadn't noticed this before, but the attached screen shot confirms it.
>> Interestingly, the right fringe of the left window is not hidden.
>
> Emacs tells Gtk where to put it.  Make `scroll-bar-width' very wide and
> you should be able to see how Gtk reacts.

Indeed: with (modify-all-frames-parameters '((scroll-bar-width . 32)))
the scroll bar still has the default width but there are nearly equally
wide spaces on both sides of it (between the scroll and the fringe to
the left and between the scroll bar and the frame border to the right).
Ok, this convinces me that Emacs is not modifying the width.

>> Do you mean that the above invocation should also make the horizontal
>> scroll bar thinner?
>
> No.  The corresponding frame parameter is called `scroll-bar-height'.
> Some systems allow different values for height and width of scroll bars.

Ah, ok. With -Q and the horizontal scroll bar enabled,
(frame-parameters) shows (scroll-bar-height . 16), and with -Q --eval
"(modify-all-frames-parameters '((scroll-bar-height . 7)))"
(frame-parameters) shows (scroll-bar-height . 7), but the horizontal
scroll bar is not thinner than with -Q, however, it partially obscures
the mode line, which is even worse than the display problem with the
vertical scroll bar on the left.

>>(Does it with the Lucid build?)  If so, then I can
>> confirm that it isn't thinner for me; but I haven't seen any display
>> glitches either with the horizontal scroll bar like I have with the
>> vertical scroll bar on the left.
>
> I think you need Xaw3d support for Lucid scroll bars.  Both Lucid and
> Motif scroll bars can be arbitrarily resized here.

As I mentioned, I can't simply build both the Lucid and the Gtk builds
on my system, apparently due to incompatible libpng requirements.

Anyway, it seems that the appropriate fix for this bug it to make
modifying the scroll-bar-width and scroll-bar-height frame parameters
noops in Gtk builds.

Steve Berman