]> git.eshelyaron.com Git - emacs.git/commitdiff
Handle scroll bar width larger than 16 for GTK3.
authorJan Djärv <jan.h.d@swipnet.se>
Sun, 5 Jun 2011 19:04:51 +0000 (21:04 +0200)
committerJan Djärv <jan.h.d@swipnet.se>
Sun, 5 Jun 2011 19:04:51 +0000 (21:04 +0200)
* gtkutil.c (xg_get_default_scrollbar_width): New function.

* gtkutil.h: Declare xg_get_default_scrollbar_width.

* xfns.c (x_set_scroll_bar_default_width): If USE_GTK, get
min width by calling x_set_scroll_bar_default_width.

Fixes: debbugs:8505
src/ChangeLog
src/gtkutil.c
src/gtkutil.h
src/xfns.c

index 8d55e443f6567cc928a5765bfc7d42985b660ddd..34982819c285f5dbe3eedf5f91cfd46b3b26b3bd 100644 (file)
@@ -1,3 +1,12 @@
+2011-06-05  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_default_scrollbar_width): New function.
+
+       * gtkutil.h: Declare xg_get_default_scrollbar_width.
+
+       * xfns.c (x_set_scroll_bar_default_width): If USE_GTK, get
+       min width by calling x_set_scroll_bar_default_width (Bug#8505).
+
 2011-06-05  Juanma Barranquero  <lekktu@gmail.com>
 
        * xdisp.c (single_display_spec_intangible_p): Remove declaration.
index 6e54006d913c9fa266720e20865160ffb1e0d885..18c6c185eaed361a58fa267ac6acfb8c412f0893 100644 (file)
@@ -3326,6 +3326,21 @@ xg_get_widget_from_map (int idx)
   return 0;
 }
 
+int
+xg_get_default_scrollbar_width (FRAME_PTR f)
+{
+  GtkWidget *wscroll = gtk_vscrollbar_new (gtk_adjustment_new (XG_SB_MIN,
+                                                               XG_SB_MIN,
+                                                               XG_SB_MAX,
+                                                               0.1, 0.1, 0.1));
+  int w = 0, b = 0;
+  gtk_widget_style_get (wscroll, "slider-width", &w, "trough-border", &b, NULL);
+  gtk_widget_destroy (wscroll);
+  w += 2*b;
+  if (w < 16) w = 16;
+  return w;
+}
+
 /* Return the scrollbar id for X Window WID on display DPY.
    Return -1 if WID not in id_to_widget.  */
 
index 3dc0a1dd1509ed88e1c6ff43b77ceb5eea09d823..cf58d03b0ce08ef6aecafb75f7983ce88840be4c 100644 (file)
@@ -135,6 +135,7 @@ extern void xg_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar,
                                              int position,
                                              int whole);
 extern int xg_event_is_for_scrollbar (FRAME_PTR f, XEvent *event);
+extern int xg_get_default_scrollbar_width (FRAME_PTR f);
 
 extern void update_frame_tool_bar (FRAME_PTR f);
 extern void free_frame_tool_bar (FRAME_PTR f);
index f3dc493ff8514d90dfd7afd39f876753e684e6f6..2fd995df34128aa52d2499060a7bb93d34fdc8f4 100644 (file)
@@ -1695,10 +1695,13 @@ void
 x_set_scroll_bar_default_width (struct frame *f)
 {
   int wid = FRAME_COLUMN_WIDTH (f);
-
+  int minw = 16;
 #ifdef USE_TOOLKIT_SCROLL_BARS
+#ifdef USE_GTK
+  minw = xg_get_default_scrollbar_width (f);
+#endif
   /* A minimum width of 14 doesn't look good for toolkit scroll bars.  */
-  int width = 16 + 2 * VERTICAL_SCROLL_BAR_WIDTH_TRIM;
+  int width = minw + 2 * VERTICAL_SCROLL_BAR_WIDTH_TRIM;
   FRAME_CONFIG_SCROLL_BAR_COLS (f) = (width + wid - 1) / wid;
   FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = width;
 #else