Obtains the current size of the window.
If the window is not onscreen, it returns the size GTK will suggest to the
window manager for the initial window size, but this is not reliably the same
as the size the window manager will actually select. The size obtained by the
gtk-window-size function is the last size received in a
gdk-event-configure event, that is, GTK uses its locally stored size,
rather than querying the X server for the size. As a result, if you call the
gtk-window-resize function then immediately call the
gtk-window-size function, the size will not have taken effect yet.
After the window manager processes the resize request, GTK receives
notification that the size has changed via a configure event, and the size of
the window gets updated.
Note
-
Nearly any use of this function creates a race condition, because the
size of the window may change between the time that you get the size and
the time that you perform some action assuming that size is the current
size. To avoid race conditions, connect to the "configure-event"
signal on the window and adjust your size dependent state to match the size delivered in the gdk-event-configure event.
-
The returned size does not include the size of the window manager
decorations, aka the window frame or border. Those are not drawn by GTK
and GTK has no reliable method of determining their size.
-
If you are getting a window size in order to position the window
onscreen, there may be a better way. The preferred way is to simply set the semantic type of the window with the gtk-window-type-hint
function, which allows the window manager to e.g. center dialogs. Also,
if you set the transient parent of dialogs with the gtk-window-transient-for function window managers will often
center the dialog over its parent window. It is much preferred to let
the window manager handle these things rather than doing it yourself,
because all applications will behave consistently and according to user
prefs if the window manager handles it. Also, the window manager can
take the size of the window decorations/border into account, while your
application cannot.
In any case, if you insist on application-specified window positioning,
there is still a better way than doing it yourself - the
gtk-window-window-position function will frequently handle the
details for you.