refactor: clamp canvas pointer movement, prioritize local pan offset, and remove debug logs
mandatory-regression-gate / deterministic-tests (push) Has been cancelled
mandatory-regression-gate / protected-performance-path (push) Has been cancelled

This commit is contained in:
Your Name
2026-07-23 19:44:13 +03:00
parent 3bac629045
commit e9dad7ef0c
3 changed files with 7 additions and 14 deletions
@@ -9495,7 +9495,6 @@ impl HcieIcedApp {
); );
// Toolbox — 36px strip (single column) or 72px (2 columns) on the left edge // Toolbox — 36px strip (single column) or 72px (2 columns) on the left edge
log::info!("[view] sidebar_expanded={}", self.sidebar_expanded);
let toolbox = crate::sidebar::view( let toolbox = crate::sidebar::view(
&self.tool_state, &self.tool_state,
&self.fg_color, &self.fg_color,
@@ -1016,14 +1016,13 @@ impl shader::Program<Message> for CanvasShaderProgram {
// Left mouse drag (drawing) // Left mouse drag (drawing)
if state.left_pressed { if state.left_pressed {
if let (Some(cx), Some(cy)) = (canvas_x, canvas_y) { let cx = canvas_x.unwrap_or(0.0).clamp(0.0, self.engine_w as f32);
let cy = canvas_y.unwrap_or(0.0).clamp(0.0, self.engine_h as f32);
return ( return (
iced::event::Status::Captured, iced::event::Status::Captured,
Some(Message::CanvasPointerMoved { x: cx, y: cy }), Some(Message::CanvasPointerMoved { x: cx, y: cy }),
); );
} }
return (iced::event::Status::Captured, Some(pane_size_msg));
}
// Middle mouse drag (panning) // Middle mouse drag (panning)
if state.middle_pressed && state.pan_start.is_some() { if state.middle_pressed && state.pan_start.is_some() {
@@ -1261,7 +1260,7 @@ impl shader::Program<Message> for CanvasShaderProgram {
canvas_w: self.engine_w, canvas_w: self.engine_w,
canvas_h: self.engine_h, canvas_h: self.engine_h,
zoom: self.zoom, zoom: self.zoom,
pan_offset: self.pan_offset, pan_offset: state.local_pan_offset.unwrap_or(self.pan_offset),
texture_update: self.texture_update.clone(), texture_update: self.texture_update.clone(),
composite_pixels: self.composite_pixels.clone(), composite_pixels: self.composite_pixels.clone(),
full_upload: self.full_upload, full_upload: self.full_upload,
@@ -168,11 +168,6 @@ pub fn view<'a>(
expanded: bool, expanded: bool,
) -> Element<'a, Message> { ) -> Element<'a, Message> {
let sidebar_width = if expanded { 72 } else { 36 }; let sidebar_width = if expanded { 72 } else { 36 };
log::info!(
"[sidebar] expanded={} open_subtool_slot={:?}",
expanded,
open_subtool_slot
);
// Tool buttons — single column or 2-column grid depending on expanded state // Tool buttons — single column or 2-column grid depending on expanded state
let mut tool_list = column![].spacing(1); let mut tool_list = column![].spacing(1);