From: Vadim Zeitlin Date: Thu, 18 Mar 2010 15:07:32 +0000 (+0000) Subject: Remove wxAuiProportionalBoxSizer hack and replace it with wxBoxSizer. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/3f931438cc1738c125eaa3c4c9a23db4ad670644 Remove wxAuiProportionalBoxSizer hack and replace it with wxBoxSizer. The temporary workaround due to wxBoxSizer changes in 2.9.0 is not needed any more, revert r59889 and use wxBoxSizer instead of custom wxAuiProportionalBoxSizer again. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63707 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/aui/framemanager.cpp b/src/aui/framemanager.cpp index cd0eebc4f9..a63b4375b0 100644 --- a/src/aui/framemanager.cpp +++ b/src/aui/framemanager.cpp @@ -570,135 +570,6 @@ static int PaneSortFunc(wxAuiPaneInfo** p1, wxAuiPaneInfo** p2) - -// this utility class implements a proportional sizer -// as it existed in wxWidgets 2.8 and before. - -class wxAuiProportionalBoxSizer : public wxBoxSizer -{ -public: - wxAuiProportionalBoxSizer(int orientation) : wxBoxSizer(orientation) { } - - void RecalcSizes() - { - if (m_children.GetCount() == 0) - return; - - int fixed_height = 0; - int fixed_width = 0; - int stretchable = 0; - wxSizerItemList::compatibility_iterator node; - - // find fixed width and height, as well - // as the total stretchable proportions - node = m_children.GetFirst(); - while (node) - { - wxSizerItem *item = node->GetData(); - - if (item->IsShown()) - { - stretchable += item->GetProportion(); - - wxSize size(item->GetMinSizeWithBorder()); - if (item->GetProportion() == 0) - { - if (m_orient == wxVERTICAL) - { - fixed_height += size.y; - fixed_width = wxMax(fixed_width, size.x); - } - else - { - fixed_width += size.x; - fixed_height = wxMax(fixed_height, size.y); - } - } - } - - node = node->GetNext(); - } - - - // delta specifies the total amount to be allocated to stretch spaces - int delta = 0; - if (stretchable) - { - if (m_orient == wxHORIZONTAL) - delta = m_size.x - fixed_width; - else - delta = m_size.y - fixed_height; - } - - // go through each item and assign sizes - wxPoint pt(m_position); - node = m_children.GetFirst(); - while (node) - { - wxSizerItem* item = node->GetData(); - - if (item->IsShown()) - { - wxSize size(item->GetMinSizeWithBorder()); - - if (m_orient == wxVERTICAL) - { - wxCoord height = size.y; - if (item->GetProportion()) - { - height = (delta * item->GetProportion()) / stretchable; - delta -= height; - stretchable -= item->GetProportion(); - } - - wxPoint child_pos(pt); - wxSize child_size(size.x, height); - - if (item->GetFlag() & (wxEXPAND | wxSHAPED)) - child_size.x = m_size.x; - else if (item->GetFlag() & wxALIGN_RIGHT) - child_pos.x += m_size.x - size.x; - else if (item->GetFlag() & (wxCENTER | wxALIGN_CENTER_HORIZONTAL)) - child_pos.x += (m_size.x - size.x) / 2; - - item->SetDimension(child_pos, child_size); - - pt.y += height; - } - else - { - wxCoord width = size.x; - if (item->GetProportion()) - { - width = (delta * item->GetProportion()) / stretchable; - delta -= width; - stretchable -= item->GetProportion(); - } - - wxPoint child_pos(pt); - wxSize child_size(width, size.y); - - if (item->GetFlag() & (wxEXPAND | wxSHAPED)) - child_size.y = m_size.y; - else if (item->GetFlag() & wxALIGN_BOTTOM) - child_pos.y += m_size.y - size.y; - else if (item->GetFlag() & (wxCENTER | wxALIGN_CENTER_VERTICAL)) - child_pos.y += (m_size.y - size.y) / 2; - - item->SetDimension(child_pos, child_size); - - pt.x += width; - } - } - - node = node->GetNext(); - } - } -}; - - - - // -- wxAuiManager class implementation -- @@ -1847,8 +1718,8 @@ void wxAuiManager::LayoutAddPane(wxSizer* cont, // value that the pane will receive int pane_proportion = pane.dock_proportion; - wxAuiProportionalBoxSizer* horz_pane_sizer = new wxAuiProportionalBoxSizer(wxHORIZONTAL); - wxAuiProportionalBoxSizer* vert_pane_sizer = new wxAuiProportionalBoxSizer(wxVERTICAL); + wxBoxSizer* horz_pane_sizer = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer* vert_pane_sizer = new wxBoxSizer(wxVERTICAL); if (pane.HasGripper()) { @@ -1870,7 +1741,7 @@ void wxAuiManager::LayoutAddPane(wxSizer* cont, if (pane.HasCaption()) { // create the caption sizer - wxAuiProportionalBoxSizer* caption_sizer = new wxAuiProportionalBoxSizer(wxHORIZONTAL); + wxBoxSizer* caption_sizer = new wxBoxSizer(wxHORIZONTAL); sizer_item = caption_sizer->Add(1, caption_size, 1, wxEXPAND); @@ -2019,7 +1890,7 @@ void wxAuiManager::LayoutAddDock(wxSizer* cont, } // create the sizer for the dock - wxSizer* dock_sizer = new wxAuiProportionalBoxSizer(orientation); + wxSizer* dock_sizer = new wxBoxSizer(orientation); // add each pane to the dock bool has_maximized_pane = false; @@ -2152,7 +2023,7 @@ wxSizer* wxAuiManager::LayoutAll(wxAuiPaneInfoArray& panes, wxAuiDockUIPartArray& uiparts, bool spacer_only) { - wxAuiProportionalBoxSizer* container = new wxAuiProportionalBoxSizer(wxVERTICAL); + wxBoxSizer* container = new wxBoxSizer(wxVERTICAL); int pane_border_size = m_art->GetMetric(wxAUI_DOCKART_PANE_BORDER_SIZE); int caption_size = m_art->GetMetric(wxAUI_DOCKART_CAPTION_SIZE); @@ -2435,7 +2306,7 @@ wxSizer* wxAuiManager::LayoutAll(wxAuiPaneInfoArray& panes, // create a container which will hold this layer's // docks (top, bottom, left, right) - cont = new wxAuiProportionalBoxSizer(wxVERTICAL); + cont = new wxBoxSizer(wxVERTICAL); // find any top docks in this layer @@ -2450,7 +2321,7 @@ wxSizer* wxAuiManager::LayoutAll(wxAuiPaneInfoArray& panes, // fill out the middle layer (which consists // of left docks, content area and right docks) - middle = new wxAuiProportionalBoxSizer(wxHORIZONTAL); + middle = new wxBoxSizer(wxHORIZONTAL); // find any left docks in this layer FindDocks(docks, wxAUI_DOCK_LEFT, layer, -1, arr); @@ -2519,7 +2390,7 @@ wxSizer* wxAuiManager::LayoutAll(wxAuiPaneInfoArray& panes, { // no sizer available, because there are no docks, // therefore we will create a simple background area - cont = new wxAuiProportionalBoxSizer(wxVERTICAL); + cont = new wxBoxSizer(wxVERTICAL); wxSizerItem* sizer_item = cont->Add(1,1, 1, wxEXPAND); wxAuiDockUIPart part; part.type = wxAuiDockUIPart::typeBackground;