From 27114d1dfdd9cd1e7091329c4d1aa5a505fe3677 Mon Sep 17 00:00:00 2001 From: cool-mist Date: Mon, 10 Aug 2026 11:48:03 +0530 Subject: [PATCH] Sticky pieces when moved out of board --- gui/src/game/logic.rs | 8 ++++---- gui/src/widgets/board.rs | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gui/src/game/logic.rs b/gui/src/game/logic.rs index 50faad5..fd1a131 100644 --- a/gui/src/game/logic.rs +++ b/gui/src/game/logic.rs @@ -138,16 +138,16 @@ impl Game { let active_game_mode_btn = game_mode_btns.get(&game_mode).unwrap(); game::button(&mut widgets, *active_game_mode_btn).is_active = false; - let mut w_board = BoardWidget::new(puzzle.board.size, puzzle.board.clone()); - w_board.on_board_state_changed = |s| Command::UpdateBoard(s.new_board_state); - let board = add_widget(&mut widgets, Widget::Board(w_board)); - let mut w_controls = ControlsWidget::new(); w_controls.add(KeyCode::Q, Command::Quit); w_controls.add(KeyCode::Escape, Command::HideRules); w_controls.add(KeyCode::D, Command::ToggleDebug); add_widget(&mut widgets, Widget::Controls(w_controls)); + let mut w_board = BoardWidget::new(puzzle.board.size, puzzle.board.clone()); + w_board.on_board_state_changed = |s| Command::UpdateBoard(s.new_board_state); + let board = add_widget(&mut widgets, Widget::Board(w_board)); + Game { puzzle, board, diff --git a/gui/src/widgets/board.rs b/gui/src/widgets/board.rs index 71e10bf..2e301cf 100644 --- a/gui/src/widgets/board.rs +++ b/gui/src/widgets/board.rs @@ -171,10 +171,6 @@ impl BoardWidget { settings: &Settings, ) -> Option { let mouse_pos = interaction.mouse_pos; - if mouse_pos.overlaps_rect(&self.board_rect) == false { - return None; - } - let old_board_state = self.current_board.state; if is_mouse_button_released(MouseButton::Left) { let current_state = self.state.clone(); @@ -199,6 +195,10 @@ impl BoardWidget { } if is_mouse_button_pressed(MouseButton::Left) { + if mouse_pos.overlaps_rect(&self.board_rect) == false { + return None; + } + let current_state = self.state.clone(); let new_state = match current_state { GameState::SelectSource(previous_target) => {