[gnome-tetravex] Disallow solve when moving tile.
- From: Arnaud B. <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-tetravex] Disallow solve when moving tile.
- Date: Mon, 16 Sep 2019 23:39:23 +0000 (UTC)
commit 152da887e9a19fe5d1e98f1f146beb1680cccae8
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date: Mon Sep 16 22:57:02 2019 +0200
Disallow solve when moving tile.
Disallow solving a game
while a tile is moving.
Fixes #10.
src/gnome-tetravex.vala | 13 +++++++++----
src/puzzle-view.vala | 5 +++++
2 files changed, 14 insertions(+), 4 deletions(-)
---
diff --git a/src/gnome-tetravex.vala b/src/gnome-tetravex.vala
index 86de813..8efe229 100644
--- a/src/gnome-tetravex.vala
+++ b/src/gnome-tetravex.vala
@@ -118,9 +118,6 @@ private class Tetravex : Gtk.Application
game_size = settings.get_int (KEY_GRID_SIZE);
((SimpleAction) lookup_action ("size")).set_state ("%d".printf (game_size));
- pause_action = (SimpleAction) lookup_action ("pause");
- solve_action = (SimpleAction) lookup_action ("solve");
-
HeaderBar headerbar = new HeaderBar ();
headerbar.title = _("Tetravex");
headerbar.show_close_button = true;
@@ -213,6 +210,14 @@ private class Tetravex : Gtk.Application
box.set_margin_bottom (20);
grid.attach (box, 1, 1, 1, 1);
+ pause_action = (SimpleAction) lookup_action ("pause");
+ solve_action = (SimpleAction) lookup_action ("solve");
+ view.tile_selected.connect ((/* bool */ selected) => {
+ if (puzzle == null || ((!) puzzle).is_solved)
+ return;
+ solve_action.set_enabled (!selected);
+ });
+
window.show_all ();
tick_cb ();
@@ -279,7 +284,6 @@ private class Tetravex : Gtk.Application
private void new_game ()
{
- pause_action.change_state (false);
pause_action.set_enabled (true);
solve_action.set_enabled (true);
new_game_solve_stack.set_visible_child_name ("solve");
@@ -394,6 +398,7 @@ private class Tetravex : Gtk.Application
puzzle.solve ();
new_game_solve_stack.set_visible_child_name ("new-game");
pause_action.set_enabled (false);
+ solve_action.set_enabled (false);
}
}
diff --git a/src/puzzle-view.vala b/src/puzzle-view.vala
index 70edc88..108cc62 100644
--- a/src/puzzle-view.vala
+++ b/src/puzzle-view.vala
@@ -78,6 +78,7 @@ public class PuzzleView : Gtk.DrawingArea
/* Tile being controlled by the mouse */
private TileImage? selected_tile = null;
+ internal signal void tile_selected (bool selected);
/* Timeout to detect if a click is a selection or a drag */
private uint selection_timeout = 0;
@@ -266,6 +267,7 @@ public class PuzzleView : Gtk.DrawingArea
move_tile_to_location (image, x, y);
}
selected_tile = null;
+ tile_selected (false);
return false;
}
@@ -386,6 +388,7 @@ public class PuzzleView : Gtk.DrawingArea
if (x >= image.x && x <= image.x + size && y >= image.y && y <= image.y + size)
{
selected_tile = image;
+ tile_selected (true);
selected_x_offset = x - image.x;
selected_y_offset = y - image.y;
@@ -449,6 +452,7 @@ public class PuzzleView : Gtk.DrawingArea
else
move_tile_to_location (selected_tile, selected_x, selected_y, 0.2);
selected_tile = null;
+ tile_selected (false);
}
private void move_tile_to_right_half (TileImage image)
@@ -491,6 +495,7 @@ public class PuzzleView : Gtk.DrawingArea
if (selected_tile != null && !on_right_half (selected_tile.x))
move_tile_to_right_half (selected_tile);
selected_tile = null;
+ tile_selected (false);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]