make styled button toggleable
Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
@@ -3,6 +3,14 @@ use notedeck::NotedeckTextStyle;
|
||||
|
||||
/// Sized and styled to match the figma design
|
||||
pub fn styled_button(text: &str, fill_color: egui::Color32) -> impl Widget + '_ {
|
||||
styled_button_toggleable(text, fill_color, true)
|
||||
}
|
||||
|
||||
pub fn styled_button_toggleable(
|
||||
text: &str,
|
||||
fill_color: egui::Color32,
|
||||
enabled: bool,
|
||||
) -> impl Widget + '_ {
|
||||
move |ui: &mut egui::Ui| -> egui::Response {
|
||||
let painter = ui.painter();
|
||||
let text_color = if ui.visuals().dark_mode {
|
||||
@@ -18,9 +26,24 @@ pub fn styled_button(text: &str, fill_color: egui::Color32) -> impl Widget + '_
|
||||
ui.available_width(),
|
||||
);
|
||||
|
||||
ui.add_sized(
|
||||
galley.rect.expand2(egui::vec2(16.0, 8.0)).size(),
|
||||
Button::new(galley).corner_radius(8.0).fill(fill_color),
|
||||
)
|
||||
let size = galley.rect.expand2(egui::vec2(16.0, 8.0)).size();
|
||||
let mut button = Button::new(galley).corner_radius(8.0);
|
||||
|
||||
if !enabled {
|
||||
button = button
|
||||
.sense(egui::Sense::focusable_noninteractive())
|
||||
.fill(ui.visuals().noninteractive().bg_fill)
|
||||
.stroke(ui.visuals().noninteractive().bg_stroke);
|
||||
} else {
|
||||
button = button.fill(fill_color);
|
||||
}
|
||||
|
||||
let mut resp = ui.add_sized(size, button);
|
||||
|
||||
if !enabled {
|
||||
resp = resp.on_hover_cursor(egui::CursorIcon::NotAllowed);
|
||||
}
|
||||
|
||||
resp
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user