Implement wxAuiNotebook::GetBestSize()
Compute the best size of the notebook, taking into account all the different layout possibilities, and add a test checking that this works as expected. Closes https://github.com/wxWidgets/wxWidgets/pull/1085
This commit is contained in:
committed by
Vadim Zeitlin
parent
d3eb5b38aa
commit
e9cbbede00
130
tests/controls/auitest.cpp
Normal file
130
tests/controls/auitest.cpp
Normal file
@@ -0,0 +1,130 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: tests/controls/auitest.cpp
|
||||
// Purpose: wxAui control tests
|
||||
// Author: Sebastian Walderich
|
||||
// Created: 2018-12-19
|
||||
// Copyright: (c) 2018 Sebastian Walderich
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include "testprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/app.h"
|
||||
#endif // WX_PRECOMP
|
||||
|
||||
#include "wx/panel.h"
|
||||
#include "wx/scopedptr.h"
|
||||
|
||||
#include "wx/aui/auibook.h"
|
||||
|
||||
#include "asserthelper.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// test class
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
TEST_CASE( "wxAuiNotebook::DoGetBestSize", "[aui]" )
|
||||
{
|
||||
wxWindow *frame = wxTheApp->GetTopWindow();
|
||||
REQUIRE( frame );
|
||||
wxAuiNotebook *nb = new wxAuiNotebook(frame);
|
||||
wxScopedPtr<wxAuiNotebook> cleanUp(nb);
|
||||
|
||||
wxPanel *p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(100, 100));
|
||||
REQUIRE( nb->AddPage(p, "Center Pane") );
|
||||
|
||||
const int tabHeight = nb->GetTabCtrlHeight();
|
||||
|
||||
SECTION( "Single pane with multiple tabs" )
|
||||
{
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(300, 100));
|
||||
nb->AddPage(p, "Center Tab 2");
|
||||
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(100, 200));
|
||||
nb->AddPage(p, "Center Tab 3");
|
||||
|
||||
CHECK( nb->GetBestSize() == wxSize(300, 200 + tabHeight) );
|
||||
}
|
||||
|
||||
SECTION( "Horizontal split" )
|
||||
{
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(25, 0));
|
||||
nb->AddPage(p, "Left Pane");
|
||||
nb->Split(nb->GetPageCount()-1, wxLEFT);
|
||||
|
||||
CHECK( nb->GetBestSize() == wxSize(125, 100 + tabHeight) );
|
||||
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(50, 0));
|
||||
nb->AddPage(p, "Right Pane 1");
|
||||
nb->Split(nb->GetPageCount()-1, wxRIGHT);
|
||||
|
||||
CHECK( nb->GetBestSize() == wxSize(175, 100 + tabHeight) );
|
||||
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(100, 0));
|
||||
nb->AddPage(p, "Right Pane 2");
|
||||
nb->Split(nb->GetPageCount()-1, wxRIGHT);
|
||||
|
||||
CHECK( nb->GetBestSize() == wxSize(275, 100 + tabHeight) );
|
||||
}
|
||||
|
||||
SECTION( "Vertical split" )
|
||||
{
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(0, 100));
|
||||
nb->AddPage(p, "Top Pane 1");
|
||||
nb->Split(nb->GetPageCount()-1, wxTOP);
|
||||
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(0, 50));
|
||||
nb->AddPage(p, "Top Pane 2");
|
||||
nb->Split(nb->GetPageCount()-1, wxTOP);
|
||||
|
||||
CHECK( nb->GetBestSize() == wxSize(100, 250 + 3*tabHeight) );
|
||||
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(0, 25));
|
||||
nb->AddPage(p, "Bottom Pane");
|
||||
nb->Split(nb->GetPageCount()-1, wxBOTTOM);
|
||||
|
||||
CHECK( nb->GetBestSize() == wxSize(100, 275 + 4*tabHeight) );
|
||||
}
|
||||
|
||||
SECTION( "Surrounding panes" )
|
||||
{
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(50, 25));
|
||||
nb->AddPage(p, "Bottom Pane");
|
||||
nb->Split(nb->GetPageCount()-1, wxBOTTOM);
|
||||
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(50, 120));
|
||||
nb->AddPage(p, "Right Pane");
|
||||
nb->Split(nb->GetPageCount()-1, wxRIGHT);
|
||||
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(225, 50));
|
||||
nb->AddPage(p, "Top Pane");
|
||||
nb->Split(nb->GetPageCount()-1, wxTOP);
|
||||
|
||||
p = new wxPanel(nb);
|
||||
p->SetMinSize(wxSize(25, 105));
|
||||
nb->AddPage(p, "Left Pane");
|
||||
nb->Split(nb->GetPageCount()-1, wxLEFT);
|
||||
|
||||
CHECK( nb->GetBestSize() == wxSize(250, 175 + 3*tabHeight) );
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user