Board is in a scrollable window
This commit is contained in:
@@ -102,25 +102,28 @@ impl eframe::App for BoardBuilderApp {
|
||||
});
|
||||
});
|
||||
CentralPanel::default().show(ctx, |ui| {
|
||||
if let Some(texture) = self.texture.as_ref() {
|
||||
let size = ui.available_size();
|
||||
let (response, painter) = ui.allocate_painter(size, Sense::click());
|
||||
let image = widgets::Image::new(texture, size);
|
||||
image.paint_at(ui, response.rect);
|
||||
let view = View(response.rect);
|
||||
self.draw_board(&painter, view);
|
||||
if let Some(pos) = response.interact_pointer_pos() {
|
||||
let btn = if response.clicked() {
|
||||
PointerButton::Primary
|
||||
} else if response.secondary_clicked() {
|
||||
PointerButton::Secondary
|
||||
} else {
|
||||
PointerButton::Middle
|
||||
};
|
||||
let (x, y) = view.xform(pos);
|
||||
self.dispatch_click(btn, x, y);
|
||||
}
|
||||
}
|
||||
ScrollArea::both().show(ui, |ui| {
|
||||
if let Some(texture) = self.texture.as_ref() {
|
||||
let raw_image = self.image.as_ref().expect("Texture without an image");
|
||||
let size = Vec2::new(raw_image.width() as f32, raw_image.height() as f32);
|
||||
let (response, painter) = ui.allocate_painter(size, Sense::click());
|
||||
let image = widgets::Image::new(texture, size);
|
||||
image.paint_at(ui, response.rect);
|
||||
let view = View(response.rect);
|
||||
self.draw_board(&painter, view);
|
||||
if let Some(pos) = response.interact_pointer_pos() {
|
||||
let btn = if response.clicked() {
|
||||
PointerButton::Primary
|
||||
} else if response.secondary_clicked() {
|
||||
PointerButton::Secondary
|
||||
} else {
|
||||
PointerButton::Middle
|
||||
};
|
||||
let (x, y) = view.xform(pos);
|
||||
self.dispatch_click(btn, x, y);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
self.create_node_dialog.ui(ctx);
|
||||
@@ -140,6 +143,7 @@ impl BoardBuilderApp {
|
||||
|
||||
BoardBuilderApp::default()
|
||||
}
|
||||
|
||||
fn load_image_file(&mut self, ctx: &Context, image_file: &Path) -> Result<(), image::ImageError> {
|
||||
let image = image::io::Reader::open(image_file)?.decode()?;
|
||||
self.load_image(ctx, image);
|
||||
|
||||
Reference in New Issue
Block a user