Quackle
About a month ago, there was a post to the Quackle mailing list, reporting a bug as follows:
When I put in a word that I do not have all the letters for, a dialog box comes up asking me if I want to play the word anyway.
If I click the “no” button, it still plays the word anyway.
I thought I’d see if I could figure out the problem and fix it. I went to my copy of the downloadable Quackle application, and tried to reproduce the bug. Performing the actions of adding a word to the candidate list, and choosing a word from the candidate list to play, separately seemed to work as expected. I then noticed the keyboard shortcut for performing these actions together (i.e. committing a word and immediately playing the same word in response to the single command) - I tried playing a word this way and the bug showed up as described.
When I’d previously looked at compiling my own version of Quackle, I wasn’t able to install what was then the required version of QT. This time, it seems that I could have just installed the most recent version of QT and it would have worked anyway. Once I’d cloned the Quackle repo from GitHub to my own machine and gone through all the compilation steps short of packaging the resulting application (and ignoring numerous warnings of various kinds), I could try reproducing the bug again, and try to track it down in the source code. No bug now. Not running the project in XCode, and not back in my previously downloaded copy any more. I can only assume that updating the version of QT on my machine was what fixed it.
I then thought that, having gotten Quackle running from the source code, I should have a go at changing a detail that has always annoyed me while using Quackle. The interface when analysing a game has a text entry field for entering a rack (if what was on the rack in the game you are analysing was different from what Quackle has randomly drawn (in case you are playing a fresh game, or investigating how a tournament game might have played out if you had moved differently at a certain point)), a button to set the rack from the contents of the field, and a button to shuffle the rack. When you type a rack in, Quackle effectively presses the ‘set rack’ button when you type a c/r or enter into the field. Pressing the ‘set rack’ button sets the rack, then highlights the text. Other generic crossword game tools I’ve used (including ones I’ve written myself) have used pressing the space bar as a keyboard shortcut for shuffling the rack. This would make sense in Quackle, but Quackle actually just replaces the currently set rack with a space, effectively removing all tiles from the rack.
From looking at the code (and dredging up the C++ I’ve done from dim, distant memory), it seems that I need to figure out how to apply a filter to the field in QT that will catch the space character (but let others through), then tie the action that the filter triggers to the shuffle button. And avoid applying the filter to all text fields in the same window, or any other unintended consquences. Actually doing this is now on my to-do list for when I’ve finished doing some more important things.