Fill'er Up

I’ve never been very good with EWL fill policies. I always manage to get them
wrong, then convince RbdPngn to fix them for me.

This isn’t such a great situation when I’m writting widgets that need to take
these things into account. This is causing a bug in the Ewl_Paned widget at the
moment.

So, I got a bit of a description on these from Nathan and though I’d share what
I’d learned.

There are three basic fill policies, then a few combinations. The main policies
are: EWL_FLAG_FILL_NONE, EWL_FLAG_FILL_SHRINK and
EWL_FLAG_FILL_FILL.

EWL_FLAG_FILL_VFILL, EWL_FLAG_FILL_HFILL, EWL_FLAG_FILL_VSHRINK and
EWL_FLAG_FILL_HSHRINK are all special cases of the EWL_FLAG_FILL_SHRINK
or EWL_FLAG_FILL_FILL policy.

There is also EWL_FLAG_FILL_ALL which is just EWL_FLAG_FILL_SHRINK |
EWL_FLAG_FILL_FILL. All fill polices at the same time.

What do these different policies mean?

NONE will be given it’s exact preferred size.

SHRINK will allow as much space away as possible to be removed, down to its
minimum size. SHRINK will grow only as large as its preferred size setting.

FILL will take as much space as possible up to its maximum size. FILL will
shrink down to its preferred size setting.

You can also think of it as: minimum_size <= shrink_size <= preferred_size <=
fill_size <= maximum_size.

A visual representation of this can be seen in the following image.

These constraints are enforced at the object level. If you’re implementing a
container you can choose to ignore them but the object will be clipped or have
extra space as needed to meet these size needs.