use crate::ui::status::{self, dropup, selectors};
use crate::ui::{Model, Selector, theme};
const LAYER: &str = "the workspace's dropup at the bar's foot";
pub(super) fn render(ui: &mut egui::Ui, model: &mut Model, open: bool) -> egui::Rect {
let run = selectors::workspace(model);
let words = if open {
run.text.clone()
} else {
super::cut(&run.text)
};
let (clicked, rect) = ui.horizontal(|ui| status::paint(ui, &run, &words)).inner;
dropup::anchor(ui, model, Selector::Workspace, rect);
if clicked {
dropup::toggle(ui, model, Selector::Workspace);
}
rect
}
pub(super) fn list(ui: &egui::Ui, model: &mut Model, foot: egui::Rect) {
if !dropup::footed(model) {
return;
}
let bar = ui.max_rect();
let edge = theme::space::L - theme::space::XS;
let room = egui::Rect::from_min_max(
egui::pos2(bar.left() - edge, ui.ctx().screen_rect().top()),
egui::pos2(bar.right() + edge, foot.top()),
);
let id = egui::Id::new(LAYER);
let mut ui = egui::Ui::new(
ui.ctx().clone(),
id,
egui::UiBuilder::new()
.layer_id(egui::LayerId::new(egui::Order::Foreground, id))
.max_rect(room),
);
dropup::stand(&mut ui, model);
}