use egui::{Context, ScrollArea, Stroke, Ui};
use crate::theme::Theme;
use crate::widgets::Window;
pub(crate) fn settings_window(
ctx: &Context,
title: &str,
open: &mut bool,
body: impl FnOnce(&mut Ui),
) -> Option<egui::Response> {
let theme = Theme::current(ctx);
let frame = theme.window_frame;
let title_frame = frame.stroke(Stroke::NONE);
let resp = Window::new(title)
.open(open)
.default_width(300.0)
.resizable([true, true])
.frame(frame)
.title_frame(title_frame)
.show(ctx, |ui| {
ScrollArea::vertical().show(ui, |ui| {
body(ui);
});
});
resp.map(|r| r.response)
}
pub(crate) fn begin_body(ui: &mut Ui) -> Theme {
let theme = Theme::current(ui.ctx());
ui.spacing_mut().item_spacing.y = theme.spacing.sm;
theme
}