Merge branch 'pref-editor-fixes'

Fixes for wxPreferencesEditor size in wxGTK/Wayland.

See #23924.
This commit is contained in:
Vadim Zeitlin 2023-10-02 19:33:49 +02:00
commit 554af01462

View file

@ -29,9 +29,7 @@
#include "wx/dialog.h"
#include "wx/notebook.h"
#include "wx/sizer.h"
#include "wx/sharedptr.h"
#include "wx/scopeguard.h"
#include "wx/vector.h"
#include <memory>
@ -84,6 +82,11 @@ public:
return false;
}
void FitPages()
{
SetClientSize(GetSizer()->GetMinSize());
}
private:
wxNotebook *m_notebook;
};
@ -99,7 +102,7 @@ public:
virtual void AddPage(wxPreferencesPage* page) override
{
m_pages.push_back(wxSharedPtr<wxPreferencesPage>(page));
m_pages.emplace_back(page);
}
protected:
@ -122,20 +125,17 @@ protected:
// can determine its best size. We'll need to extend
// wxPreferencesPage with a GetBestSize() virtual method to make
// it possible to defer the creation.
for ( Pages::const_iterator i = m_pages.begin();
i != m_pages.end();
++i )
for ( const auto& page : m_pages )
{
dlg->AddPage(i->get());
dlg->AddPage(page.get());
}
dlg->Fit();
dlg->FitPages();
return dlg;
}
typedef wxVector< wxSharedPtr<wxPreferencesPage> > Pages;
Pages m_pages;
std::vector<std::unique_ptr<wxPreferencesPage>> m_pages;
private:
wxString m_title;