diff options
| author | Jan Djärv | 2011-06-05 21:04:51 +0200 |
|---|---|---|
| committer | Jan Djärv | 2011-06-05 21:04:51 +0200 |
| commit | a059fe247c6ba6be105986b229bf2d8374f40583 (patch) | |
| tree | e91c16de86332f52bfff728140fb3c5387c4128b /src | |
| parent | ac09b8a1289ec8f8a71c8dc55d4eeebaf2600707 (diff) | |
| download | emacs-a059fe247c6ba6be105986b229bf2d8374f40583.tar.gz emacs-a059fe247c6ba6be105986b229bf2d8374f40583.zip | |
Handle scroll bar width larger than 16 for GTK3.
* 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
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 9 | ||||
| -rw-r--r-- | src/gtkutil.c | 15 | ||||
| -rw-r--r-- | src/gtkutil.h | 1 | ||||
| -rw-r--r-- | src/xfns.c | 7 |
4 files changed, 30 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 8d55e443f65..34982819c28 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,12 @@ | |||
| 1 | 2011-06-05 Jan Djärv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * gtkutil.c (xg_get_default_scrollbar_width): New function. | ||
| 4 | |||
| 5 | * gtkutil.h: Declare xg_get_default_scrollbar_width. | ||
| 6 | |||
| 7 | * xfns.c (x_set_scroll_bar_default_width): If USE_GTK, get | ||
| 8 | min width by calling x_set_scroll_bar_default_width (Bug#8505). | ||
| 9 | |||
| 1 | 2011-06-05 Juanma Barranquero <lekktu@gmail.com> | 10 | 2011-06-05 Juanma Barranquero <lekktu@gmail.com> |
| 2 | 11 | ||
| 3 | * xdisp.c (single_display_spec_intangible_p): Remove declaration. | 12 | * xdisp.c (single_display_spec_intangible_p): Remove declaration. |
diff --git a/src/gtkutil.c b/src/gtkutil.c index 6e54006d913..18c6c185eae 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c | |||
| @@ -3326,6 +3326,21 @@ xg_get_widget_from_map (int idx) | |||
| 3326 | return 0; | 3326 | return 0; |
| 3327 | } | 3327 | } |
| 3328 | 3328 | ||
| 3329 | int | ||
| 3330 | xg_get_default_scrollbar_width (FRAME_PTR f) | ||
| 3331 | { | ||
| 3332 | GtkWidget *wscroll = gtk_vscrollbar_new (gtk_adjustment_new (XG_SB_MIN, | ||
| 3333 | XG_SB_MIN, | ||
| 3334 | XG_SB_MAX, | ||
| 3335 | 0.1, 0.1, 0.1)); | ||
| 3336 | int w = 0, b = 0; | ||
| 3337 | gtk_widget_style_get (wscroll, "slider-width", &w, "trough-border", &b, NULL); | ||
| 3338 | gtk_widget_destroy (wscroll); | ||
| 3339 | w += 2*b; | ||
| 3340 | if (w < 16) w = 16; | ||
| 3341 | return w; | ||
| 3342 | } | ||
| 3343 | |||
| 3329 | /* Return the scrollbar id for X Window WID on display DPY. | 3344 | /* Return the scrollbar id for X Window WID on display DPY. |
| 3330 | Return -1 if WID not in id_to_widget. */ | 3345 | Return -1 if WID not in id_to_widget. */ |
| 3331 | 3346 | ||
diff --git a/src/gtkutil.h b/src/gtkutil.h index 3dc0a1dd150..cf58d03b0ce 100644 --- a/src/gtkutil.h +++ b/src/gtkutil.h | |||
| @@ -135,6 +135,7 @@ extern void xg_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar, | |||
| 135 | int position, | 135 | int position, |
| 136 | int whole); | 136 | int whole); |
| 137 | extern int xg_event_is_for_scrollbar (FRAME_PTR f, XEvent *event); | 137 | extern int xg_event_is_for_scrollbar (FRAME_PTR f, XEvent *event); |
| 138 | extern int xg_get_default_scrollbar_width (FRAME_PTR f); | ||
| 138 | 139 | ||
| 139 | extern void update_frame_tool_bar (FRAME_PTR f); | 140 | extern void update_frame_tool_bar (FRAME_PTR f); |
| 140 | extern void free_frame_tool_bar (FRAME_PTR f); | 141 | extern void free_frame_tool_bar (FRAME_PTR f); |
diff --git a/src/xfns.c b/src/xfns.c index f3dc493ff85..2fd995df341 100644 --- a/src/xfns.c +++ b/src/xfns.c | |||
| @@ -1695,10 +1695,13 @@ void | |||
| 1695 | x_set_scroll_bar_default_width (struct frame *f) | 1695 | x_set_scroll_bar_default_width (struct frame *f) |
| 1696 | { | 1696 | { |
| 1697 | int wid = FRAME_COLUMN_WIDTH (f); | 1697 | int wid = FRAME_COLUMN_WIDTH (f); |
| 1698 | 1698 | int minw = 16; | |
| 1699 | #ifdef USE_TOOLKIT_SCROLL_BARS | 1699 | #ifdef USE_TOOLKIT_SCROLL_BARS |
| 1700 | #ifdef USE_GTK | ||
| 1701 | minw = xg_get_default_scrollbar_width (f); | ||
| 1702 | #endif | ||
| 1700 | /* A minimum width of 14 doesn't look good for toolkit scroll bars. */ | 1703 | /* A minimum width of 14 doesn't look good for toolkit scroll bars. */ |
| 1701 | int width = 16 + 2 * VERTICAL_SCROLL_BAR_WIDTH_TRIM; | 1704 | int width = minw + 2 * VERTICAL_SCROLL_BAR_WIDTH_TRIM; |
| 1702 | FRAME_CONFIG_SCROLL_BAR_COLS (f) = (width + wid - 1) / wid; | 1705 | FRAME_CONFIG_SCROLL_BAR_COLS (f) = (width + wid - 1) / wid; |
| 1703 | FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = width; | 1706 | FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = width; |
| 1704 | #else | 1707 | #else |