[gnome-tetravex] Fallback double click on single click, part 3.
- From: Arnaud B. <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-tetravex] Fallback double click on single click, part 3.
- Date: Sat, 28 Sep 2019 19:53:41 +0000 (UTC)
commit 0005917c4335e5f3a4ed81238e7e3680c7e4ed5e
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date: Sat Sep 28 20:32:09 2019 +0200
Fallback double click on single click, part 3.
src/puzzle-view.vala | 24 +++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
---
diff --git a/src/puzzle-view.vala b/src/puzzle-view.vala
index e57e42b..26979b3 100644
--- a/src/puzzle-view.vala
+++ b/src/puzzle-view.vala
@@ -512,6 +512,9 @@ private class PuzzleView : Gtk.DrawingArea
private inline bool main_button_pressed (Gdk.EventButton event)
{
+ if (puzzle.is_solved) // security
+ return false;
+
if (event.type == Gdk.EventType.BUTTON_PRESS)
{
if (selected_tile == null)
@@ -521,10 +524,13 @@ private class PuzzleView : Gtk.DrawingArea
}
else if (event.type == Gdk.EventType.DOUBLE_BUTTON_PRESS)
{
+ bool had_selected_tile = selected_tile != null;
+
/* Move tile from left to right on double click */
pick_tile (event.x, event.y);
if (selected_tile == null)
return false;
+
if (on_right_half (((!) selected_tile).x))
{
uint8 x;
@@ -535,13 +541,21 @@ private class PuzzleView : Gtk.DrawingArea
puzzle.get_tile_location (((!) selected_tile).tile, out selected_x, out selected_y);
if (puzzle.can_switch (selected_x, selected_y, x, y))
puzzle.switch_tiles (selected_x, selected_y, x, y, final_animation_duration);
- else
- return false; /* consider double click as a single click */
+ else /* consider double click as a single click */
+ {
+ if (had_selected_tile)
+ drop_tile (event.x, event.y);
+ return false;
+ }
+ }
+ else /* consider double click as a single click */
+ {
+ if (had_selected_tile)
+ drop_tile (event.x, event.y);
+ return false;
}
- else
- return false; /* consider double click as a single click */
}
- else
+ else if (!had_selected_tile)
move_tile_to_right_half (((!) selected_tile).tile);
((!) selected_tile).snap_to_cursor = true;
selected_tile = null;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]