Modernize scrollbar look

This commit is contained in:
Robin Gareus
2024-12-04 02:38:35 +01:00
parent 3c8527cbf0
commit e59a5fcc2b
4 changed files with 75 additions and 91 deletions

View File

@@ -58,14 +58,16 @@ style "default" = "medium_text"
GtkScrollbar :: arrow-scaling = 0.4 # [ 0.5 ] ( 0.1 ) The arrow size proportion relative to the scroll button size.
GtkScrollbar :: fixed-slider-length = 0 # [ 0 ] ( bool ) Don't change slider size, just lock it to the minimum length.
GtkScrollbar :: min-slider-length = 50 # [ 21 ] ( >= 0 ) Minimum length of scrollbar slider.
GtkScrollbar :: slider-width = 15 # [ 14 ] ( >= 0 ) Width of scrollbar or scale thumb.
GtkScrollbar :: slider-width = 10 # [ 14 ] ( >= 0 ) Width of scrollbar or scale thumb.
GtkScrollbar :: stepper-spacing = 0 # [ 0 ] ( >= 0 ) The spacing between the stepper buttons and thumb. Note that setting this value to anything > 0 will automatically set the trough-under-steppers style property to TRUE as well. Also, stepper-spacing won't have any effect if there are no steppers.
GtkScrollbar :: trough-border = 0 # [ 1 ] ( >= 0 ) Spacing between thumb/steppers and outer trough bevel.
GtkScrollbar :: focus-line-width = 0
GtkScrollbar :: focus-padding = 0
GtkScrollbar :: trough-side-details = 0 # [ 0 ] ( bool ) When TRUE, the parts of the trough on the two sides of the slider are drawn with different details.
GtkScrollbar :: trough-under-steppers = 1 # [ 1 ] ( bool ) Whether to draw the trough across the full length of the range or to exclude the steppers and their spacing. Note that setting the "stepper-spacing" style property to any value > 0 will automatically enable trough-under-steppers too.
GtkScrollbar :: has-backward-stepper = 1 # [ 1 ] ( bool ) Display the standard backward arrow button.
GtkScrollbar :: has-forward-stepper = 1 # [ 1 ] ( bool ) Display the standard forward arrow button.
GtkScrollbar :: has-backward-stepper = 0 # [ 1 ] ( bool ) Display the standard backward arrow button.
GtkScrollbar :: has-forward-stepper = 0 # [ 1 ] ( bool ) Display the standard forward arrow button.
GtkScrollbar :: has-secondary-backward-stepper = 0 # [ 0 ] ( bool ) Display a second backward arrow button on the opposite end of the scrollbar.
GtkScrollbar :: has-secondary-forward-stepper = 0 # [ 0 ] ( bool ) Display a second forward arrow button on the opposite end of the scrollbar.

View File

@@ -1584,8 +1584,6 @@ clearlooks_draw_scrollbar_trough (cairo_t *cr,
{
const CairoColor *bg;
CairoColor bg_shade;
cairo_pattern_t *pattern;
const CairoColor *border = &colors->shade[5];
(void) widget;
bg = &colors->shade[2];
@@ -1604,6 +1602,9 @@ clearlooks_draw_scrollbar_trough (cairo_t *cr,
ge_cairo_set_color (cr, bg);
cairo_fill (cr);
#if 0
cairo_pattern_t *pattern;
const CairoColor *border = &colors->shade[5];
/* Draw shadow */
pattern = cairo_pattern_create_linear (1, 0, 3, 0);
cairo_pattern_add_color_stop_rgb (pattern, 0, bg_shade.r, bg_shade.g, bg_shade.b);
@@ -1616,6 +1617,7 @@ clearlooks_draw_scrollbar_trough (cairo_t *cr,
/* Draw border */
ge_cairo_set_color (cr, border);
ge_cairo_stroke_rectangle (cr, 0.5, 0.5, width-1, height-1);
#endif
}
static void
@@ -1690,6 +1692,12 @@ clearlooks_draw_scrollbar_slider (cairo_t *cr,
const ScrollBarParameters *scrollbar,
int x, int y, int width, int height)
{
const CairoColor *border = &colors->shade[7];
CairoColor fill = scrollbar->color;
CairoColor hilight;
CairoColor shade1, shade2, shade3;
cairo_pattern_t *pattern;
if (scrollbar->junction & CL_JUNCTION_BEGIN)
{
if (scrollbar->horizontal)
@@ -1711,103 +1719,53 @@ clearlooks_draw_scrollbar_slider (cairo_t *cr,
height += 1;
}
double radius = MIN (widget->radius, MIN ((width - 4.0) / 2.0, (height - 4.0) / 2.0));
if (!scrollbar->horizontal)
ge_cairo_exchange_axis (cr, &x, &y, &width, &height);
/* not have has-backward-stepper || has-forward-stepper : add padding */
if (width > 2) {
x += 2;
width -= 4;
}
cairo_translate (cr, x, y);
if (widget->prelight)
ge_shade_color (&fill, 1.1, &fill);
cairo_set_line_width (cr, 1);
ge_shade_color (&fill, 1.25, &hilight);
ge_shade_color (&fill, 1.16, &shade1);
ge_shade_color (&fill, 1.08, &shade2);
ge_shade_color (&fill, 1.08, &shade3);
pattern = cairo_pattern_create_linear (1, 1, 1, height-2);
cairo_pattern_add_color_stop_rgb (pattern, 0, shade1.r, shade1.g, shade1.b);
cairo_pattern_add_color_stop_rgb (pattern, 0.5, shade2.r, shade2.g, shade2.b);
cairo_pattern_add_color_stop_rgb (pattern, 0.5, fill.r, fill.g, fill.b);
cairo_pattern_add_color_stop_rgb (pattern, 1, shade3.r, shade3.g, shade3.b);
ge_cairo_rounded_rectangle (cr, 1, 1, width-2, height-2, radius, widget->corners);
cairo_set_source (cr, pattern);
cairo_fill (cr);
cairo_pattern_destroy (pattern);
#if 0
if (scrollbar->has_color)
{
const CairoColor *border = &colors->shade[7];
CairoColor fill = scrollbar->color;
CairoColor hilight;
CairoColor shade1, shade2, shade3;
cairo_pattern_t *pattern;
if (widget->prelight)
ge_shade_color (&fill, 1.1, &fill);
cairo_set_line_width (cr, 1);
ge_shade_color (&fill, 1.3, &hilight);
ge_shade_color (&fill, 1.1, &shade1);
ge_shade_color (&fill, 1.05, &shade2);
ge_shade_color (&fill, 0.98, &shade3);
pattern = cairo_pattern_create_linear (1, 1, 1, height-2);
cairo_pattern_add_color_stop_rgb (pattern, 0, shade1.r, shade1.g, shade1.b);
cairo_pattern_add_color_stop_rgb (pattern, 0.5, shade2.r, shade2.g, shade2.b);
cairo_pattern_add_color_stop_rgb (pattern, 0.5, shade3.r, shade3.g, shade3.b);
cairo_pattern_add_color_stop_rgb (pattern, 1, fill.r, fill.g, fill.b);
cairo_rectangle (cr, 1, 1, width-2, height-2);
cairo_set_source (cr, pattern);
cairo_fill (cr);
cairo_pattern_destroy (pattern);
cairo_set_source_rgba (cr, hilight.r, hilight.g, hilight.b, 0.5);
ge_cairo_stroke_rectangle (cr, 1.5, 1.5, width-3, height-3);
ge_cairo_set_color (cr, border);
ge_cairo_stroke_rectangle (cr, 0.5, 0.5, width-1, height-1);
}
else
{
const CairoColor *dark = &colors->shade[4];
const CairoColor *light = &colors->shade[0];
CairoColor border;
CairoColor s1, s2, s3, s4, s5;
cairo_pattern_t *pattern;
int bar_x, i;
#endif
ge_shade_color(&colors->shade[6], 1.05, &border);
s2 = colors->bg[widget->state_type];
ge_shade_color(&s2, 1.06, &s1);
ge_shade_color(&s2, 0.98, &s3);
ge_shade_color(&s2, 0.94, &s4);
pattern = cairo_pattern_create_linear(1, 1, 1, height-1);
cairo_pattern_add_color_stop_rgb(pattern, 0, s1.r, s1.g, s1.b);
cairo_pattern_add_color_stop_rgb(pattern, 0.5, s2.r, s2.g, s2.b);
cairo_pattern_add_color_stop_rgb(pattern, 0.7, s3.r, s3.g, s3.b);
cairo_pattern_add_color_stop_rgb(pattern, 1.0, s4.r, s4.g, s4.b);
cairo_rectangle (cr, 1, 1, width-2, height-2);
cairo_set_source(cr, pattern);
cairo_fill(cr);
cairo_pattern_destroy(pattern);
clearlooks_set_border_gradient (cr, &border, 1.2, 0, height);
ge_cairo_stroke_rectangle (cr, 0.5, 0.5, width-1, height-1);
cairo_move_to (cr, 1.5, height-1.5);
cairo_line_to (cr, 1.5, 1.5);
cairo_line_to (cr, width-1.5, 1.5);
ge_shade_color (&s2, 1.3, &s5);
cairo_set_source_rgba (cr, s5.r, s5.g, s5.b, 0.5);
cairo_stroke(cr);
/* draw handles */
cairo_set_line_width (cr, 1);
bar_x = width/2 - 4;
cairo_translate(cr, 0.5, 0.5);
for (i=0; i<3; i++)
{
cairo_move_to (cr, bar_x, 4);
cairo_line_to (cr, bar_x, height-5);
ge_cairo_set_color (cr, dark);
cairo_stroke (cr);
cairo_move_to (cr, bar_x+1, 4);
cairo_line_to (cr, bar_x+1, height-5);
ge_cairo_set_color (cr, light);
cairo_stroke (cr);
bar_x += 3;
}
}
CairoColor composite;
ge_mix_color (border, &fill, scrollbar->has_color? 0.4 : 0.2, &composite);
ge_cairo_set_color (cr, &composite);
ge_cairo_rounded_rectangle (cr, 0.5, 0.5, width-1, height-1, radius, widget->corners);
cairo_stroke (cr);
}
static void

View File

@@ -909,7 +909,7 @@ clearlooks_style_draw_slider (DRAW_ARGS, GtkOrientation orientation)
ScrollBarParameters scrollbar;
clearlooks_set_widget_parameters (widget, style, state_type, &params);
params.corners = CR_CORNER_NONE;
//params.corners = CR_CORNER_NONE;
scrollbar.has_color = FALSE;
scrollbar.horizontal = (orientation == GTK_ORIENTATION_HORIZONTAL);
@@ -925,6 +925,8 @@ clearlooks_style_draw_slider (DRAW_ARGS, GtkOrientation orientation)
{
ge_gdk_color_to_cairo (&clearlooks_style->scrollbar_color, &scrollbar.color);
scrollbar.has_color = TRUE;
} else {
scrollbar.color = colors->bg[0];
}
STYLE_FUNCTION(draw_scrollbar_slider) (cr, colors, &params, &scrollbar,

22
refactor.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/sed -f
s/strip_button_toggled/att_left_button_toggled/
s/list_button_toggled/att_right_button_toggled/
s/props_button_toggled/att_bottom_button_toggled/
s/showhide_sidebar_strip/showhide_att_left/
s/showhide_sidebar_list/showhide_att_right/
s/showhide_btm_props/showhide_att_bottom/
s/content_transport_ebox/content_app_bar/
s/content_strip_ebox/contents_att_left/
s/content_list_vbox/content_right_vbox/
s/content_list_ebox/content_att_right/
s/content_attachments_ebox/content_attachments/
s/content_tabbables_ebox/content_tabbables/
s/content_toolbar_ebox/content_toolbar/
s/content_list_pane/content_right_pane/
s/content_innermost_ebox/content_innermost_hbox/
s/content_props_ebox/content_att_bottom/
s/_transport_table/_table/g
s/TransportBar/ApplicationBar/g
s/strip_attachment_button/left_attachment_button/
s/list_attachment_button/right_attachment_button/
s/prop_attachment_button/bottom_attachment_button/