[gnome-sudoku] Fix earmarks behavior (issue #36)
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-sudoku] Fix earmarks behavior (issue #36)
- Date: Sun, 3 May 2020 11:47:33 +0000 (UTC)
commit e803acb025fb328f99f42f02b35e70825cdc4ce3
Author: Andrey Kutejko <andy128k gmail com>
Date: Sun May 3 00:17:13 2020 +0200
Fix earmarks behavior (issue #36)
src/sudoku-view.vala | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
---
diff --git a/src/sudoku-view.vala b/src/sudoku-view.vala
index 91f018c..116b74b 100644
--- a/src/sudoku-view.vala
+++ b/src/sudoku-view.vala
@@ -194,7 +194,7 @@ private class SudokuCellView : DrawingArea
popover.position = PositionType.BOTTOM;
popover.notify["visible"].connect (()=> {
if (!popover.visible)
- destroy_popover (ref popover);
+ destroy_popover (ref popover, ref number_picker);
});
popover.focus_out_event.connect (() => {
popover.hide ();
@@ -217,7 +217,7 @@ private class SudokuCellView : DrawingArea
earmark_popover.position = PositionType.BOTTOM;
earmark_popover.notify["visible"].connect (()=> {
if (!earmark_popover.visible)
- destroy_popover (ref earmark_popover);
+ destroy_popover (ref earmark_popover, ref earmark_picker);
});
earmark_popover.focus_out_event.connect (() => {
earmark_popover.hide ();
@@ -227,8 +227,9 @@ private class SudokuCellView : DrawingArea
earmark_popover.show ();
}
- private void destroy_popover (ref Popover popover)
+ private void destroy_popover (ref Popover popover, ref NumberPicker picker)
{
+ picker = null;
if (popover != null)
{
popover.destroy ();
@@ -299,10 +300,15 @@ private class SudokuCellView : DrawingArea
if (want_earmark && game.mode == GameMode.PLAY)
{
var new_state = !game.board.is_earmark_enabled (row, col, k_no);
- if (earmark_picker == null)
- create_earmark_picker ();
- if (earmark_picker.set_earmark (row, col, k_no-1, new_state))
- queue_draw ();
+ if (new_state)
+ game.enable_earmark (row, col, k_no);
+ else
+ game.disable_earmark (row, col, k_no);
+
+ if (earmark_picker != null)
+ earmark_picker.set_earmark (row, col, k_no-1, new_state);
+
+ queue_draw ();
}
else
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]