Blob Blame History Raw
From e2d06bfe77f7acc5058dd76a4e9f5640e59274a1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Mon, 16 May 2016 11:53:12 +0100
Subject: [PATCH] gtk3: min slider size too small since 3.20.0

"GtkScrollbar:min-slider-length has been deprecated since version 3.20 and
should not be used in newly-written code.

Use min-height/min-width CSS properties on the slider element instead. The
value of this style property is ignored."

sigh....

Change-Id: I0fe44b0a3dd31bd60c07f58ae5245496a7463fe2
(cherry picked from commit 2f5bba2511ef5ef3ad92f8f9547e25128570c324)
---
 vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx | 28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

diff --git a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
index c1117fe..14aba8a 100644
--- a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
@@ -2116,14 +2116,26 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
     gint min_slider_length = 21;
 
     // Grab some button style attributes
-    gtk_style_context_get_style( mpVScrollbarStyle,
-                                 "slider-width", &slider_width,
-                                 "trough-border", &trough_border,
-                                 "min-slider-length", &min_slider_length,
-                                 nullptr );
-    gint magic = trough_border ? 1 : 0;
-    aStyleSet.SetScrollBarSize( slider_width + 2*trough_border );
-    aStyleSet.SetMinThumbSize( min_slider_length - magic );
+    gtk_style_context_get_style(mpVScrollbarStyle,
+                                "slider-width", &slider_width,
+                                "trough-border", &trough_border,
+                                nullptr);
+    aStyleSet.SetScrollBarSize(slider_width + 2*trough_border);
+    if (gtk_check_version(3, 20, 0) == nullptr)
+    {
+        gtk_style_context_get(mpVScrollbarSliderStyle, gtk_style_context_get_state(mpVScrollbarSliderStyle),
+                              "min-height", &min_slider_length,
+                              nullptr);
+        aStyleSet.SetMinThumbSize(min_slider_length);
+    }
+    else
+    {
+        gtk_style_context_get_style(mpVScrollbarStyle,
+                                    "min-slider-length", &min_slider_length,
+                                    nullptr);
+        gint magic = trough_border ? 1 : 0;
+        aStyleSet.SetMinThumbSize(min_slider_length - magic);
+    }
 
     // preferred icon style
     gchar* pIconThemeName = nullptr;
-- 
2.7.3