I create a variable number of buttons by using a Control Set containing one button, and then adding buttons to it as needed, as the app runs. These are in effect radio buttons, with one “pressed” and the other not. On macOS/Win I use Invalidate() to get a button repainted, as necessary. This approach works well here.
On Linux, however, the paint event is never called. So although the buttons are present, they are not visible. I know the buttons are actually there, as clicking where a button should be has the appropriate effect.
The Invalidate() does happen; I’ve stepped through that with the debugger. So what is it about this setup that causes it to fail under Linux?