Let file chooser show preview of textures on board When browsing for a board texture or piece theme, selecting a file in the browser will now cause immediate display of the board with that texture or theme, which will revert if you cancel the choice. Or when you accept the choice, but cancel the Board dialog.
Apply fonts in 'other windows' after sizing
Store fonts changed by font dialog in fonts table The fonts table holds fonts per type and size that should be saved in the settings file because they were either read from it, or explicitly specified by the user on the command line. This now also holds for fonts altered through the Fonts dialog, without waiting for the saving of settings, because by that time the boardSize might already be different.
Reset fontIsSet when sizing causes change to default font The array fontIsSet now tracks whether the fonts in actual use are from a (possibly size-adapted) default, or were specified by an option (also through a fontIsValid entry in the fontsTable) or the Fonts dialog. For changing a font on sizing a subroutine is now used.
Adjust window height after clock-font change A routine LockBoardSize are added, and called to protect the board's Graph widget from absorbing the height change pf clock and message field. Enlarging these now forces the top-level window to expand, and after the change we try to reduce this window size to tightly fit the board to squeeze out empty area after shrinking.
Silence warning due to missing prototype
Make sizing more robust (GTK) On sizing we now do not immediately replace the buffer canvas, but set a flag in the Graph Option to indicate the canvas is invalid. Instead of taking the canvas handle from a global variable (csBoardWindow) we now obtain it in every drawing call from a function, which first tests if the canvas is still valid. If it is not, we replace it by one of the size specified in the Option (which was obtained from the window size the moment the flag was set). The GraphExpose requests now bypass the general GraphEventProc, by calling the drawing of the exposed area (which was relocated to a separate function) directly. This avoids the overhead of checking for resizing through requesting the window geometry.
Fix popdown of Error/Help dialog through window-close button Closing an Error popup that was a daughter of another dialog (as Help dialogs would often be) through the window-close button instead of 'OK' would permanently block popdown of the parent dialog, because the info that the Error dialog was still up would not have been reset by the Error dialog's OK function. GenericPopDown now calls the OK function of such a dialog (actually FatalDlg) even on a REJECT response.
Suppress echo of password in ICS Chat window (GTK) The GTK version uses the set_visibility GTK call to switch echoing of the ICS input widget. In Xaw this is a dummy. EchoOn/Off had to be moved to dialogs.c for this.
Fix popdown of menus on help click Because menus by default also react to button3 clicks, using those clicks for help popup needs to suppress the default action. But this action was also reponsible for the popdown of the menu, so that it stayed up, covering the help dialog. Now we do allow the default action, but flag to the generic menu handler that it should not execute the menu function.
Merge branch 'v4.8.x'
updated copyright for 2016
Allow engine to force popup of its settings dialog An engine can now force popping up of its settings dialog by sending 'feature done=3' to the GUI. It can clear its option list (e.g. for the purpose of resending it because of altered settings) by sending 'feature done=0'. Such resending would cause the dialog to be updated when it was already open, or close it and pop up a new one when the engine specifies it has to be redesigned by ending the list with 'feature done=2'.
Updated copyright notice to 2015
Let file selecor remember last used directory (GTK) The file selector now starts in the directory that was last used to load a file of the type we are now browsing for. (Supported types: pgn, fen, trn, bin, png.)
Add extra font field to Option struct Storing the font in the textValue field was too kludgy, as this field is already heavily used in the various Option types, for storing handles, or defining colors and callbacks. A 'font' field is now added at the end, so that it can be optionally initialized in the rare case it is needed.
Let GTK build pay attention to font arguments Multi-line text edits now use the initial value of the Option.textValue field as a pointer to a (char*) holding a font name, to be used for the text displayed in it. (After which they overwrite the field with the textView handle.) The font options -tagsFont, -commentFont, icsFont, -moveHistoryFont and -gameListFont are now activated in the GTK build, to control the corresponding memos.
Recognize Esc and Tab in ICS Console input Esc is used to close the chat, or transfer focus to the board window. Tab is used to navigate between chats (or open the first). Priority is given to dirty chats.
Let ICS Console pop up GTK in stead of ICS Input Box
Add context menu to ICS console XB-GTK A right-click handler is added to the output memos of the ICS Interaction window. It pops up the ICS text menu. It is remembered whether the menu was already up; if not, it will be popped down after a command is selected from it. Like the WinBoard context menu, the commands will be able to use the clicked word. The -icsMenu 'command' $chat is now recognized as a special case, not to be sent to the ICS, but executed by XBoard. It will assign one of the five chats to the clicked name. If no empty chat is available, the last chat will be used (but not cleared). The -icsMenu in the master config file is now configured to contain this command, but unfortunately this will not become effective for users that already have a settings file. The Text Menu now puts $input commands in ICS Console Input field when the ICS Input Box is not up. The text placed in the input field for completion (as per $input directive) turned out to be selected in GTK, so that when you stated typing, it was erased again! By making the Text menu dialog subject to WindowPlacement control, and interrogating the poition of the ICS Console window, the Text Menu can be popped up such that the mouse pointer is on the bottom-left button.