diff --git a/Cargo.lock b/Cargo.lock index c551aec..cb6345d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -756,7 +756,7 @@ checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" [[package]] name = "gamenite" -version = "0.1.0" +version = "0.1.1" dependencies = [ "image", "serde", diff --git a/gamenite-gui/src/main.rs b/gamenite-gui/src/main.rs index 5adde26..f85675c 100644 --- a/gamenite-gui/src/main.rs +++ b/gamenite-gui/src/main.rs @@ -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);