flap: Properly calculate minimum and natural sizes

Alice Mikhaylenko requested to merge alicem/libhandy:flap-nat into master

Currently, we always calculate minimum and natural size th esame way. This technically works, but is incorrect semantically. For example, it means that flap's natural size changes depending on whether it's currently folded, while folding state may change depending on the allocated size.

Instead, calculate natural size as follows:

  • When the flap is always folded, do the same thing as berore
  • When it's never folded, assume natural to be what the flap will be like when fully revealed
  • For the automatic policy, an important distinction is whether the flap is locked or not. If it's not locked, we can safely assume the size when unfolded and fully revealed as well, but if it is locked and the flap is not revealed, we assume that to be the natural size, because the flap will never be auto-revealed on resizeing, and unlike the never folded state, revealing the flap will not cause a widget resize either.

Additionally, never account for the separator size for the flap's orientation. When folded, the separator will end up completely offscreen, and it's expected and supported situation.

Merge request reports