From b019f541610f0f8b993d38b0dd8a4f6df0f0a5f8 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Tue, 22 Mar 2016 22:28:57 +0100 Subject: [PATCH] Make the piece-was-moved detection more robust, so that it works correctly with drag and drop. --- www/js/remoteglot.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/www/js/remoteglot.js b/www/js/remoteglot.js index 48f23b0..60468bd 100644 --- a/www/js/remoteglot.js +++ b/www/js/remoteglot.js @@ -1681,12 +1681,17 @@ var find_display_line_matching_num = function() { return null; } +/** Update the board based on the currently displayed line. + * + * TODO: This should really be called only whenever something changes, + * instead of all the time. + */ var update_displayed_line = function() { if (current_display_line === null) { $("#linenav").hide(); $("#linemsg").show(); display_fen = base_fen; - board.position(base_fen); + set_board_position(base_fen); update_imbalance(base_fen); return; } @@ -1706,18 +1711,23 @@ var update_displayed_line = function() { } var hiddenboard = chess_from(current_display_line.start_fen, current_display_line.pretty_pv, current_display_move); + set_board_position(hiddenboard.fen()); + if (display_fen !== hiddenboard.fen() && !current_display_line_is_history) { + // Fire off a hash request, since we're now off the main position + // and it just changed. + explore_hash(hiddenboard.fen()); + } display_fen = hiddenboard.fen(); + update_imbalance(hiddenboard.fen()); +} + +var set_board_position = function(new_fen) { board_is_animating = true; var old_fen = board.fen(); - board.position(hiddenboard.fen()); + board.position(new_fen); if (board.fen() === old_fen) { board_is_animating = false; - } else if (!current_display_line_is_history) { - // Fire off a hash request, since we're now off the main position - // and it just changed. - explore_hash(display_fen); } - update_imbalance(hiddenboard.fen()); } /** -- 2.39.2