Resizeable sandbox panels

This commit is contained in:
mars 2022-11-15 17:02:15 -07:00
parent a648ef360e
commit 7b2a110c12
1 changed files with 14 additions and 2 deletions

View File

@ -70,6 +70,7 @@ impl eframe::App for App {
index, index,
msg_buf: String::new(), msg_buf: String::new(),
show_msg: false, show_msg: false,
current_size: Default::default(),
}; };
self.panels.push(panel); self.panels.push(panel);
@ -91,6 +92,7 @@ pub struct PanelWindow {
pub index: usize, pub index: usize,
pub msg_buf: String, pub msg_buf: String,
pub show_msg: bool, pub show_msg: bool,
pub current_size: egui::Vec2,
} }
impl PanelWindow { impl PanelWindow {
@ -101,14 +103,24 @@ impl PanelWindow {
ui.checkbox(&mut self.show_msg, "Show Message Editor"); ui.checkbox(&mut self.show_msg, "Show Message Editor");
}); });
let size = egui::vec2(800.0, 800.0);
let sense = egui::Sense { let sense = egui::Sense {
click: true, click: true,
drag: true, drag: true,
focusable: true, focusable: true,
}; };
let (rect, response) = ui.allocate_at_least(size, sense); let desired_size = ui.available_size();
let response = ui.allocate_response(desired_size, sense);
let rect = response.rect;
if rect.size() != self.current_size {
let size = rect.size();
self.current_size = size;
let size = canary::Vec2::new(size.x, size.y);
println!("resizing: {:?}", size);
self.panel.on_resize(size / PX_PER_MM);
}
if let Some(hover_pos) = response.hover_pos() { if let Some(hover_pos) = response.hover_pos() {
let local = (hover_pos - rect.left_top()) * PX_PER_MM; let local = (hover_pos - rect.left_top()) * PX_PER_MM;