Sorry, I didn't explain the situation very well. The application uses the full screen (our customers just use the computer for that one application, which is a control system for TV studio equipment, driving it from a touch screen). Its main window is never re-sized, and nor are any child windows. When I said that the items displayed are scaled to the size of the screen, it is not dynamic scaling; the scaling is based on the number of pixels in the display, so that we can cope (to some extent) with different screen sizes, although in practice we also supply the hardware for the application, so the screen size is typically almost always the same. We have optimised for 22 inch screens, so it might not look too good with other dimensions.
So we haven't reinvented sizers. Whether we could actually achieve the same control over positioning of items on the screen with sizers, I don't know, but whoever first implemented the program clearly didn't think they were necessary even if they would have been useful.
Yes, that is what I mean.
It seems to be fairly consistent, although I have seen very occasional cases of something magically reappearing after previously being missing, and also the other way round: something that was displayed then disappearing later, on switching pages. Once the initial change has been seen, then it seems be to consistent thereafter.Is the behavior consistent? I.E. if you start the program multiple times, are always the same items missing?
Anyway, I have produced a cut-down version of my application. This program demonstrates the problem on Linux with wxWidgets version 3.0.5, running on Debian 10. (It should also show the problem on Ubuntu 20.04, or at least our main application does; I have not tried the cut-down version myself on Ubuntu).
The problem does not occur, however, on Windows when built with wxWidgets version 3.0.2; nor does it occur on Debian 8 with 3.0.2 (although I would have thought that the thing of more relevance would be the version of GTK rather than wxWidgets). I have yet to try wxWidgets 3.0.2 with the newer GTK on Debian 10, nor 3.0.5 on Windows.
I have tried to remove as much of the irrelevant code as possible, but even so there are 32 source files, I'm afraid. I have attached this within a .tar file.
The source file of most relevance is IniConfigPage.cpp. There is a #define near the top of the file:
When compiled with this symbol defined, the problem does not manifest. With it commented out, however, then the problem occurs - the panel (CHeadInfoPanel) on the right-hand side of the screen (which contains a number of items) is missing.
Note that when working, the idea is that text should be shown within the panel when one of the items on the left-hand side of the screen is selected. (I notice on Windows that the selection doesn't fully work - the items are supposed to change colour from green to yellow when selected. I would be interested to know why that is, also!)
The difference between the 2 cases is that when INI_CONFIG_PANEL_ONLY is #defined, a wxPanel is instantiated on part of the screen, without anything being added to it. When the symbol is removed, then an object of the CIniControl class is instantiated in the same position instead. The position of this class should not overlap with anything else that is supposed to be displayed.
I am quite prepared to believe that there is something peculiar about the CIniControl class that might trigger the fault, but if so, I don't understand why it seems to work in some environments and not others. I have also simplified the class so that it doesn't actually do very much, and the fault still happens.
By the way, if anyone does go so far as to actually buiid and run the program, then to exit, press the DONE button in the bottom right, which brings up a different (dummy) page. Then press MENU and EXIT. You can get back to the original page by pressing MENU and then the INI Config Settings button.
Thanks in advance for any help!