Delete emptied front-end files, and move rest to gtk directory Remove #ifdeffed-out Xt code that has GTK implementation. The xgamelist and xhistory have been completely cleared off content, and were removed.
Some experimenting with sizing Does not work as intended yet.
Add displaying of icons A new Option type, 'Icon', was added for this as in GTK Icons and Labels need different types of widget. The icons are now svg, so we could remove the icon pixmaps.
Fix button bar
Add BarBegin, BarEnd options This makes the button bar display correctly. Also fix v-sizing of menu bar.
Add listbox double-click callback This function was formerly performed by WheelProc.
Add hiding / showing second Engine Output pane The handle of the GTK table for the second engine is stored in the EndMark handle by GenericPopUp, so it can be used later to hise/show that table.
Use different tables for different dialog columns Making the same table wider (in steps of 3) to get multiple columns does not work, because it forces options to align vertically. This wrecks dialogs like Load Engine, where one column contains a very high option (listbox). Now differnt tables are created for each column, packed in a new itermediate hbox. In case of the Engine Output window, a vbox is used instead to cause vertical stacking. Only multi-line text-edits and listboxes are now allowed to take up vertical space changes, while only the middle colum of the table can take up horizontal size changes. Within packing boxes space is equally distributed. The labels above the particiant-selection widgets had not the same width as the textview / listbox, leading to misplacement of the second label. For Engine Settings the spontaneous breaking into columns did not involve a SAME_ROW flag, so the 'columns' were stacked vertically. In addition the columns were too tall for GTK. They are now 20 options max.
Deselect first char in Move Type-in and ICS Input Box After popup the Move Type-In had the typed character in it, but it was selected, so that typing a second character would erase it again. Same for the ICS Input Box. A prototype for CursorAtEnd is now also added.
Close Move Type-in on Enter The code is squeezed into the ICSKeyEvent callback.
Add access routines to checkboxes and FocusOnWidget The <Enter> handler of the filter field needs it to return focus to the listbox.
Add game-list callbacks The callbacks for listbox and filter text are treated by the same callback, which does both key presses and button double-clicks. Giving focus back to the listbox after filtering does not yet work!
Add optional callback to Label Options For some reason this does not work. The callback isn't called!
Add Shift detection The state of Shift and Ctrl was only probed on button clicks, so it is now read out of the button-event struct in the relevant button handlers. For backwad compatibility, they store it in a global, so the routine ShiftKeys can take them from there.
Remove some unneeded low-level X11 code Things like tabbing between controls, mouse-wheel scolling etc. are all automatic in GTK, and thuse don't need to be ported.
Fix ListBox, and add some support routines The srolled-window for the listbox used a uninitialized variable for its width, causing a crash. Now it pays attention to the Option.max and .value size hints. The access routines were copied from gtk-xt. HighlightWithScroll could just a wrapper for HighlightListBoxItem, as GTK auto-scrolls.
Fix animation Because FrameDelay does block the event loop, even though it releaes the CPU, expose events start to lag behind the actual drawing. By combining expose events for overlapping squares, rather than decompose them into 3 rectangles, this problem seems to go away. But only if there is an extra exposure on the squares to be drawn also non-overlapping frames will be properly drawn (?!).
Implement highlighting in engine output by through generic method HighlightMove was made generally available for all text. It is now just a wrapper for the generic HighlightText, and could be moved to the back-end. (This requires the initialization to be widget specific, and the flag indicating it has been done is now stored in the Option.min field.)
Let engine-output memos use new generic callback
Add scrolling of Move History To have access to the textview, its handle is now stored in the Option.textValue field.