I have a gtk.IconView with several icons in it. Sometimes I will resize the window to see more icons. When I do this, the extra space generated isn’t distributed evenly between all the columns. Instead, it all gets put on the right until there’s enough space for a new column.
I’m not seeing anything in the documentation that would let me do this automatically. Do I need to check for resize signals and then manually set the column and row spacings? If so, which resize signal do I use.
Here’s a picture of what I mean. I’ve marked the extra space in red.

This is what I’d like to see (of course, with the gaps actually evenly spaced, unlike my poor MS Paint job).

We have encountered that problem in Ubuntu Accomplishments Viewer, and as we managed to solve it, I’ll present our solution.
The trick is to place the GtkIconView in a GtkScrolledWindow, and set it’s hscrollbar_policy to “always”. Then, a check-resize signal has to be used, to react when the user resizes the window (note that it must be checked if the size has changed, for the signal is emitted also when e.g. the window is dragged around). When the size changes, the model used by GtkIconView has to be cleared and recreated, as this triggers GtkIconView properly reallocating the newly gained space (or shrinking). Also, as the result the horizontal scrollbar will never be seen, as the GtkIconView uses exactly that much space as the GtkScrolledWindow uses.