split wxSizer::Fit() into ComputeFittingWindow/ClientSize() that only does computations and Fit() that applies the result to the window

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51767 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2008-02-13 21:32:11 +00:00
parent 7be6187f19
commit 32013b47d6
3 changed files with 79 additions and 7 deletions

View File

@@ -834,8 +834,10 @@ void wxSizer::DeleteWindows()
}
}
wxSize wxSizer::Fit( wxWindow *window )
wxSize wxSizer::ComputeFittingClientSize(wxWindow *window)
{
wxCHECK_MSG( window, wxDefaultSize, "window can't be NULL" );
// take the min size by default and limit it by max size
wxSize size = GetMinClientSize(window);
wxSize sizeMax;
@@ -846,8 +848,7 @@ wxSize wxSizer::Fit( wxWindow *window )
// hack for small screen devices where TLWs are always full screen
if ( tlw->IsAlwaysMaximized() )
{
// do nothing
return tlw->GetSize();
return tlw->GetClientSize();
}
// limit the window to the size of the display it is on
@@ -873,8 +874,22 @@ wxSize wxSizer::Fit( wxWindow *window )
if ( sizeMax.y != wxDefaultCoord && size.y > sizeMax.y )
size.y = sizeMax.y;
return size;
}
wxSize wxSizer::ComputeFittingWindowSize(wxWindow *window)
{
wxCHECK_MSG( window, wxDefaultSize, "window can't be NULL" );
return window->ClientToWindowSize(ComputeFittingClientSize(window));
}
wxSize wxSizer::Fit( wxWindow *window )
{
wxCHECK_MSG( window, wxDefaultSize, "window can't be NULL" );
// set client size
window->SetClientSize( size );
window->SetClientSize(ComputeFittingClientSize(window));
// return entire size
return window->GetSize();