X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/089ca539acced38d70e750e4a9589cf8d175ec5d..6255fac96fb3f2b5bd22f1d84f3716a89a3f5c54:/src/ribbon/panel.cpp?ds=sidebyside diff --git a/src/ribbon/panel.cpp b/src/ribbon/panel.cpp index 68a8d216e8..a590c9b8f0 100644 --- a/src/ribbon/panel.cpp +++ b/src/ribbon/panel.cpp @@ -8,22 +8,24 @@ // Copyright: (C) Peter Cawley // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// + #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif +#if wxUSE_RIBBON + +#include "wx/ribbon/panel.h" #include "wx/ribbon/art.h" #include "wx/ribbon/bar.h" -#include "wx/ribbon/panel.h" #include "wx/dcbuffer.h" #include "wx/display.h" -#include "wx/frame.h" - -#if wxUSE_RIBBON +#include "wx/sizer.h" #ifndef WX_PRECOMP +#include "wx/frame.h" #endif #ifdef __WXMSW__ @@ -42,7 +44,7 @@ BEGIN_EVENT_TABLE(wxRibbonPanel, wxRibbonControl) EVT_SIZE(wxRibbonPanel::OnSize) END_EVENT_TABLE() -wxRibbonPanel::wxRibbonPanel() +wxRibbonPanel::wxRibbonPanel() : m_expanded_dummy(NULL), m_expanded_panel(NULL) { } @@ -576,15 +578,20 @@ bool wxRibbonPanel::Layout() return true; } - // TODO: Delegate to a sizer + // Get wxRibbonPanel client size + wxPoint position; + wxClientDC dc(this); + wxSize size = m_art->GetPanelClientSize(dc, this, GetSize(), &position); - // Common case of no sizer and single child taking up the entire panel - if(GetChildren().GetCount() == 1) + // If there is a sizer, use it instead + if ( GetSizer() ) + { + GetSizer()->SetDimension(position.x, position.y, size.GetWidth(), size.GetHeight()); + } + else if(GetChildren().GetCount() == 1) { + // Common case of no sizer and single child taking up the entire panel wxWindow* child = GetChildren().Item(0)->GetData(); - wxPoint position; - wxClientDC dc(this); - wxSize size = m_art->GetPanelClientSize(dc, this, GetSize(), &position); child->SetSize(position.x, position.y, size.GetWidth(), size.GetHeight()); } return true;