From 41c75dbb9bf1e02976a84b00a1e3c267746ee9bd Mon Sep 17 00:00:00 2001 From: Hakan Seven Date: Wed, 27 May 2026 22:38:45 +0300 Subject: [PATCH] feat(viewport): click activates tile, swaps in its camera MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tiled Model layout'ta aktif olmayan bir tile'a tıklamak onu aktive edip kamerasını canlı scene.camera'ya yüklüyor (set_active_model_tile_at). Böylece her panel bağımsız bir bakış tutuyor — bir panelde orbit/zoom yaparken diğerleri sabit kalıyor. Aktif tile'a tıklama normal selection/draw akışına devam ediyor. Pick/pan/viewcube'un tam tile-relative koordinat yönlendirmesi sıradaki adımda. Co-Authored-By: Claude Opus 4.7 --- src/app/update.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/app/update.rs b/src/app/update.rs index 1bce54e86..0b7fead21 100644 --- a/src/app/update.rs +++ b/src/app/update.rs @@ -1974,6 +1974,19 @@ impl OpenCADStudio { } } + // Tiled Model layout: clicking a non-active tile activates + // it (swapping in its camera) instead of selecting / drawing. + if self.tabs[i].active_cmd.is_none() && vw > 1.0 && vh > 1.0 { + if self + .tabs[i] + .scene + .set_active_model_tile_at(p.x / vw, p.y / vh) + { + self.tabs[i].scene.camera_generation += 1; + return Task::none(); + } + } + if self.tabs[i].active_cmd.is_none() && !self.tabs[i].selected_grips.is_empty() { if let Some(handle) = self.tabs[i].selected_handle { let is_paper = self.tabs[i].scene.current_layout != "Model";