Cancel move if promotion type selector is closed
https://bugzilla.gnome.org/show_bug.cgi?id=742762
This commit is contained in:
parent
1f9239ec8c
commit
ed9ffc4ba2
2 changed files with 6 additions and 7 deletions
|
@ -77,7 +77,7 @@ public class ChessScene : Object
|
|||
private double animation_time;
|
||||
|
||||
public signal bool is_human (ChessPlayer player);
|
||||
public signal PieceType choose_promotion_type ();
|
||||
public signal PieceType? choose_promotion_type ();
|
||||
public signal void changed ();
|
||||
|
||||
public int selected_rank = -1;
|
||||
|
@ -229,7 +229,9 @@ public class ChessScene : Object
|
|||
(rank == 0 || rank == 7))
|
||||
{
|
||||
/* Prompt user for selecting promotion type */
|
||||
PieceType promotion_selection = choose_promotion_type ();
|
||||
PieceType? promotion_selection = choose_promotion_type ();
|
||||
if (promotion_selection == null)
|
||||
return;
|
||||
game.current_player.move_with_coords (selected_rank,
|
||||
selected_file, rank, file, true, promotion_selection);
|
||||
selected_rank = selected_file = -1;
|
||||
|
|
|
@ -261,7 +261,7 @@ public class ChessApplication : Gtk.Application
|
|||
window.show ();
|
||||
}
|
||||
|
||||
public PieceType show_promotion_type_selector ()
|
||||
public PieceType? show_promotion_type_selector ()
|
||||
{
|
||||
Gtk.Builder promotion_type_selector_builder;
|
||||
|
||||
|
@ -298,7 +298,7 @@ public class ChessApplication : Gtk.Application
|
|||
|
||||
promotion_type_selector_builder.connect_signals (this);
|
||||
|
||||
PieceType selection;
|
||||
PieceType? selection = null;
|
||||
int choice = promotion_type_selector_dialog.run ();
|
||||
switch (choice)
|
||||
{
|
||||
|
@ -314,9 +314,6 @@ public class ChessApplication : Gtk.Application
|
|||
case PromotionTypeSelected.BISHOP:
|
||||
selection = PieceType.BISHOP;
|
||||
break;
|
||||
default:
|
||||
selection = PieceType.QUEEN;
|
||||
break;
|
||||
}
|
||||
promotion_type_selector_dialog.destroy ();
|
||||
|
||||
|
|
Loading…
Reference in a new issue