In many cases the pre-comment of one move is displayed at the same
position in the move text as the post-comment of the previous move.
When this is the case, don't make a distinction between pre and post
comments in the "Edit Comments" dialog.
The PGN standard does not allow the '}' character inside a comment,
because it is used to end the comment.
Therefore this character is now replaced with '}' (fullwidth right
curly bracket) when editing comments. This does not look great but is
better than making the PGN data invalid.
This is needed to avoid problems when dragging one of the R/G/B
sliders. With the default Android conversion code, the other R/G/B
sliders sometimes move during dragging.
The following settings can now be changed using the OI file manager:
* Opening Book Settings -> Book Filename
* Endgame Tablebases -> GTB Directory
* Endgame Tablebases -> Syzygy Directory
For string UCI options containing "file" or "path" in their names, add
a button that opens a file browser to set the value of the option.
The browse button is only available if "OI file manager" or a
compatible app is installed. The button is not available for network
engines because there is no way to browse the remote filesystem where
the network engine runs.
The new action "load deleted game" loads a recently deleted game from
the autosave file, without affecting the "last used file" and "current
position in last used file" properties.
The 20 most recently auto-saved games are kept in the file
DroidFish/pgn/.autosave.pgn.
Overwriting an existing game when saving a new game also auto-saves
the old game.
The analysis information is copied as text to the clipboard. The full
text is copied, so the "truncate variations" and "hide statistics"
settings have no effect on the text put in the clipboard.
Add new setting (default true) to allow input of moves by dragging a
piece from its source square to the target square.
This setting partially overlaps with scroll gestures on the chess
board, so when this setting is enabled, scroll gestures will only
happen if the starting square is empty or contains a piece of the
color not to make the next move.
After the engine plays a move in a game, a thread could get into a
state where it would poll for engine output every millisecond while
waiting for the human player to make the next move.
Even though this was not a busy wait, it would still use more CPU
resources than necessary, so the logic has been changed to prevent
this situation.
Move the margin between the move list and the button row to the button
row container, so that the margin does not interfere with the
calculation in MoveListView.onMeasure().
Adjusted the MoveListView content size so that the last row can be
scrolled to a position where the previous line is completely hidden.
When computing the autoscroll Y position the parts of characters
descending below the font baseline were visible for the line before
the first line that was supposed to be visible.
Also add a small margin above the move list to separate it somewhat
from the button row.
En passant fixup requires generating a list of legal moves, which can
fail with an array index out of bounds exception if there is a pawn on
the first/last rank.
When loading a PGN game from a file a list is displayed with one item
for each game in the file. Filtering of this list has been improved in
several ways:
* Made it possible to search for part of a word and to include space
characters in the search.
* While changing the search string keep the top list element unchanged
when possible.
* When using the "load from last file" action to go to the game list,
start at the position in the list corresponding to the previously
loaded game.
* Make the "load next/previous game" actions load the correct game
also when a filter is in effect.
* Use correct text color after a game has been deleted from the game
list.