Subject: bug#20619: Scrollbars

From: Eugen Dedu <[email-masked]>
Date: Tue, 27 Dec 2016 23:45:24 +0100

On 24/12/16 08:56, Eli Zaretskii wrote:
>> From: Eugen Dedu <[email-masked]>
>> Date: Fri, 23 Dec 2016 21:30:17 +0100
>>
>> Now, to advance emacs support for HIDPI I would like to fix the
>> scrollbar.  Do all people here agree that the scrollbar has a width
>> twice as normal?  The reason is that in src/gtkutil.c there is this code:
>>
>> int
>> xg_get_default_scrollbar_width (void)
>> {
>>    return scroll_bar_width_for_theme * xg_get_gdk_scale ();
>> }
>>
>> where xg_get_gdk_scale returns GDK_SCALE variable, i.e. 2 in general.
>>
>> If I replace with:
>>    return scroll_bar_width_for_theme;
>> the scrollbar is shown correctly.
>>
>> This change was made by
>> https://github.com/emacs-mirror/emacs/commit/c0055ff5b03c9121ab5bf752496b09416f0f0a7d.
>>   I think there was an error there, or perhaps in the mean time (since
>> May 2015) GTK has changed in a way so that scrollbars are taken into
>> account.
>
> What is your version of GTK?  That commit points to a bug report
> (bug#20432), so this change is not a mistake, it did fix a real
> problem with scroll bars.  We could make it conditional on the GTK
> version, though.  The bug report mentions a specific GTK version.

I use gtk 3.22.5.

To reproduce the exact environment when that commit was made, I pulled 
the repository at the commit right before that change and compiled it. 
I had one compile error that I fixed with an #undef, and another one:
make[1]: *** [bootstrap-emacs] Segmentation fault
which I have not tried to fix.

>> Note that GDK_DPI_SCALE is only for font, AFAIU from
>> https://developer.gnome.org/gtk3/stable/gtk-x11.html.
>
> The code you mention doesn't use GDK_DPI_SCALE.

Indeed.  I wrote this because in the bug 20432 which the commit fixed it 
was mentioned GDK_DPI_SCALE too.

>> What do you think?  Would you commit such a modification?
>
> I don't think we can simply revert the change in question, but maybe
> we could use different code based on GTK version.

If I make an #ifdef with gtk 3.22, is that fine to do the commit? 
Everyone can test with a gtk-enabled emacs simply using "GDK_SCALE=2 emacs".

>> I would like to look into other issues as well.
>
> Thank you!  I see bugs 20432, 21469, and 18429 that might be relevant.

I have looked at them, but I think the right thing to do is just to fix 
using conditionals, things have changed in the last 1-1.5 years (when 
those bugs were written) it seems.

-- 
Eugen