message: Override WindowWith2DSizingConstraints<T>::Layout()
  Override not only Fit(), but Layout() as well, doing the same 2D
  iterative computation. This is needed when there's more than minimal
  space available.
diff: @@ -81,13 +81,26 @@ public:
  using Base::Base;
  void Fit() override
  + {
  + IterateUntilConvergence([=]{ this->SetSize(this->GetBestSize()); });
  + }
  +
  + bool Layout() override
  + {
  + IterateUntilConvergence([=]{ Base::Layout(); });
  + return true;
  + }
  +
  +private:
  + template<typename T>
  + void IterateUntilConvergence(T&& action)
  {
  // iterate sizing because performing layout may invalidate some best
  // sizes (AutoWrappingText) and may need to be redone.
  wxSize best = this->GetBestSize();
  while ( true )
  {
  - this->SetSize(best);
  + action();
  wxSize updatedBest = this->GetBestSize();
  if ( best == updatedBest )
  break;
  