[gnome-tetravex] Do not drop tile while unpausing.



commit 1d91282bb1a479414996910d5969c57ffd488f62
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date:   Tue Sep 17 01:36:21 2019 +0200

    Do not drop tile while unpausing.
    
    Clicking on the view when
    the game is paused should
    unpause, without dropping
    –if any– the moving tile.

 src/gnome-tetravex.vala | 4 ++--
 src/puzzle-view.vala    | 5 ++++-
 src/puzzle.vala         | 8 +++-----
 3 files changed, 9 insertions(+), 8 deletions(-)
---
diff --git a/src/gnome-tetravex.vala b/src/gnome-tetravex.vala
index b9657e8..e98a925 100644
--- a/src/gnome-tetravex.vala
+++ b/src/gnome-tetravex.vala
@@ -138,7 +138,7 @@ private class Tetravex : Gtk.Application
         view = new PuzzleView ();
         view.hexpand = true;
         view.vexpand = true;
-        view.button_press_event.connect (view_button_press_event);
+        view.button_release_event.connect (view_button_release_event);
         grid.attach (view, 0, 0, 3, 1);
 
         SizeGroup sizegroup = new SizeGroup (SizeGroupMode.BOTH);
@@ -367,7 +367,7 @@ private class Tetravex : Gtk.Application
         show_scores ();
     }
 
-    private bool view_button_press_event (Widget widget, Gdk.EventButton event)
+    private bool view_button_release_event (Widget widget, Gdk.EventButton event)
     {
         /* Cancel pause on click */
         if (puzzle.paused)
diff --git a/src/puzzle-view.vala b/src/puzzle-view.vala
index 108cc62..6a1d337 100644
--- a/src/puzzle-view.vala
+++ b/src/puzzle-view.vala
@@ -68,7 +68,7 @@ public class PuzzleView : Gtk.DrawingArea
                 }
             }
             _puzzle.tile_moved.connect (tile_moved_cb);
-            _puzzle.paused_changed.connect (() => { queue_draw (); });
+            _puzzle.notify ["paused"].connect (() => { queue_draw (); });
             queue_resize ();
         }
     }
@@ -504,6 +504,9 @@ public class PuzzleView : Gtk.DrawingArea
 
     public override bool button_release_event (Gdk.EventButton event)
     {
+        if (puzzle.paused)
+            return false;
+
         if (event.button == 1 && selected_tile != null && selection_timeout == 0)
             drop_tile (event.x, event.y);
 
diff --git a/src/puzzle.vala b/src/puzzle.vala
index 2365cce..9b87021 100644
--- a/src/puzzle.vala
+++ b/src/puzzle.vala
@@ -53,9 +53,9 @@ public class Puzzle : Object
     }
 
     private bool _paused = false;
-    public bool paused
+    [CCode (notify = true)] internal bool paused
     {
-        set
+        internal set
         {
             _paused = value;
             if (clock != null)
@@ -65,14 +65,12 @@ public class Puzzle : Object
                 else
                     continue_clock ();
             }
-            paused_changed ();
         }
-        get { return _paused; }
+        internal get { return _paused; }
     }
     
     public signal void tile_moved (Tile tile, uint x, uint y);    
     public signal void solved ();
-    public signal void paused_changed ();
     public signal void tick ();
     
     public bool is_solved


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]