I was browsing gtk.org in the hope to find a guide about how application developers are supposed to manage the contents of the windows they are about to draw in their applications. Unfortunately I found no guidance about that.
Lets take the window where I type this email right now for example. Most GUI have that "New Mail" window, with a menu bar at the top, followed by the list of author and recipients, followed by subject and finally the text area. At the end there is maybe a status row.
How is an application supposed to know what the maximum "height" and "width" of that window is? In my case the total screen height has to be subtracted by the application panel of the desktop, but maybe that panel is vertically aligned so more of the full height would be available. Then this window may have titlebar, and some border of varying width does exist as well.
If all of the above would be known by the application, it could start collecting the various items to be drawn inside that window, and make decisions about how the available space should be distributed. For example, an email with many recipients will result in a long list and therefore take too much space. As a result, the text area below it may be just one line or not be shown at all. So it has to decide if that list needs a scrollbar or not.
Similar with the width of that window. The app may decide that the width should be old-style fixed-width 80 chars. This would leave little room for the menubar and the recipients, which may have very long names.
Unfortunately, the app I decided to use goes the easy way: it asks for the size if the window and stores that size in its preferences in the hope the values will fit just fine for the next email. As you can guess, these values will not fit the next time. It also uses gtk_widget_set_size_request and similar with often hardcoded values, which means various buttons may overlap or whatever damage can be done with that approach.
I browsed the API documentation, and maybe one can find out by try-and-error. It also looks as if gtk3 has more knobs than gtk2 had, based on the available function names. It would be good if a document exists to obtain and use the information I have outlined above.