button sticky_color

This commit is contained in:
galister 2026-07-12 22:24:56 +09:00
parent 02f1de59b2
commit fb71975019
3 changed files with 20 additions and 12 deletions

View File

@ -39,7 +39,7 @@
</template>
<template name="DangerButton">
<Button id="${id}" border_color="danger" color="danger(rgb-mult-0.5)" height="32" tooltip="${translation}_HELP" padding="4" gap="8">
<Button id="${id}" color="danger" border_color="danger(rgb-mult-0.5)" height="32" tooltip="${translation}_HELP" padding="4" gap="8">
<sprite src_builtin="${icon}" height="24" width="24" color="on_danger" />
<label align="left" translation="${translation}" weight="bold" min_width="200" color="on_danger" />
</Button>

View File

@ -11,7 +11,7 @@
padding="8" color="background"
border="2" border_color="outline" round="8" />
<macro name="button_style" padding="8" border="2" round="8" align_items="center" justify_content="center" />
<macro name="button_style" padding="8" border="2" round="8" align_items="center" justify_content="center" sticky_color="primary" sticky_border_color="primary(rgb-mult-0.5)" hover_color="tertiary" hover_border_color="tertiary(rgb-mult-0.5)" />
<template name="Device">
<rectangle macro="decorative_rect" padding_top="4" padding_bottom="4" align_items="center" gap="8">

View File

@ -235,12 +235,18 @@ impl ComponentButton {
let colors = &state.colors;
{
let globals = common.globals();
let palette = &globals.palette;
let bgcolor = colors.color.lerp(palette, &colors.hover_color, mult * 0.5);
rect.params.color = bgcolor;
rect.params.color2 = get_color2(&bgcolor, gradient_intensity);
rect.params.border_color = colors.border_color.lerp(palette, &colors.hover_border_color, mult);
let bgcolor = if sticky_down {
colors.color.lerp(&common.globals().palette, &colors.sticky_color, mult)
} else {
colors.color.lerp(&common.globals().palette, &colors.hover_color, mult * 0.5)
};
rect.params.color = bgcolor;
rect.params.color2 = get_color2(&bgcolor, gradient_intensity);
rect.params.border_color = if sticky_down {
colors.border_color.lerp(&common.globals().palette, &colors.sticky_border_color, mult)
} else {
colors.border_color.lerp(&common.globals().palette, &colors.hover_border_color, mult)
};
}
common.alterables.mark_redraw();
}),
@ -267,8 +273,8 @@ fn anim_hover(
let (init_border_color, init_color) = if sticky_down {
(
colors.hover_border_color,
colors.color.lerp(&globals.palette, &colors.hover_color, 0.5),
colors.sticky_border_color,
colors.sticky_color,
)
} else {
(colors.border_color, colors.color)
@ -486,10 +492,12 @@ pub fn construct(ess: &mut ConstructEssentials, params: Params) -> anyhow::Resul
.hover_border_color
.unwrap_or_else(|| border_color.add_rgb(0.5).add_alpha(0.5));
let sticky_color = params.hover_color.unwrap_or_else(|| color.add_rgb(0.15).add_alpha(0.1));
let sticky_color = params
.sticky_color
.unwrap_or_else(|| color.add_rgb(0.15).add_alpha(0.1));
let sticky_border_color = params
.hover_border_color
.sticky_border_color
.unwrap_or_else(|| border_color.add_rgb(0.25).add_alpha(0.35));
let gradient_intensity = theme.gradient_intensity;