// virtual LDraw::SizeD DockPanel::ArrangeOverride(LDraw::SizeD finalSize) { LDraw::BBoxD layoutRect(0, 0, finalSize.Width, finalSize.Height); unsigned int ncount = get_InternalChildren()->GetCount();//get_rchildList()->get_Size(); for (unsigned int i = 0; i < ncount; i++) { UIElement* pVisual = get_InternalChildren()->get_Item(i);//(*get_rchildList())[i]; if (pVisual->get_Visibility() != Collapsed) { // long dockValue; DockEnum dock = GetDock(pVisual); ASSERT(pVisual->get_DesiredSize().Width >= 0 && pVisual->get_DesiredSize().Height >= 0); // double fLeft; // double fTop; if (dock == Fill || ((i == ncount-1) && get_LastChildFill())) { pVisual->Arrange(layoutRect);//LDraw::RectD(layoutRect.GetWidth(), layoutRect.GetHeight())); // fLeft = layoutRect.left; // fTop = layoutRect.top; } else if (dock == Left) { pVisual->Arrange(LDraw::RectD(layoutRect.left, layoutRect.top, pVisual->get_DesiredSize().Width, layoutRect.GetHeight())); // fLeft = layoutRect.left; // fTop = layoutRect.top; layoutRect.left += pVisual->get_ActualSize().Width; } else if (dock == Top) { pVisual->Arrange(LDraw::RectD(layoutRect.left, layoutRect.top, layoutRect.GetWidth(), pVisual->get_DesiredSize().Height)); // fLeft = layoutRect.left; // fTop = layoutRect.top; layoutRect.top += pVisual->get_ActualSize().Height; } else if (dock == Right) { pVisual->Arrange(LDraw::RectD(layoutRect.right - pVisual->get_DesiredSize().Width, layoutRect.top, pVisual->get_DesiredSize().Width, layoutRect.GetHeight())); // fLeft = layoutRect.right - pVisual->get_ActualSize().Width; // fTop = layoutRect.top; layoutRect.right -= pVisual->get_ActualSize().Width; } else if (dock == Bottom) { pVisual->Arrange(LDraw::RectD(layoutRect.left, layoutRect.bottom - pVisual->get_DesiredSize().Height, layoutRect.GetWidth(), pVisual->get_DesiredSize().Height)); // fLeft = layoutRect.left; // fTop = layoutRect.bottom - pVisual->get_ActualSize().Height; layoutRect.bottom -= pVisual->get_ActualSize().Height; } else ASSERT(0); // pVisual->SetLayoutOffset(fLeft, fTop); if (dock == Fill || layoutRect.GetWidth() <= 0 || layoutRect.GetHeight() <= 0) { break; } } } return finalSize; }
void TreeItem::OnArrange(LDraw::SizeD finalSize) { m_ExpandButton->Arrange(LDraw::RectD(LDraw::PointD(0, 0), m_ExpandButton->get_DesiredSize()/*LDraw::SizeD(1, 14)*/)); //m_ExpandButton->SetLayoutOffset(0, 0); // pCell->m_computedLeft = x; double height = m_ExpandButton->m_computedSize.Height; double x = m_ExpandButton->m_computedSize.Width; if (m_Span) { m_Span->Arrange(LDraw::RectD(x, 0, finalSize.Width-x, height/*m_Span->get_DesiredSize().Height*/)); //m_Span->SetLayoutOffset(x, 0); m_Span->m_computedLeft = x; height = MAX(height, m_Span->get_ActualSize().Height); } if (m_cells.GetSize()) { double totalWidth = m_ownerCtl->get_ActualSize().Width; { ColumnHeader* pColumn = m_ownerCtl->get_ColumnHeaderList()->m_columns[0]; // if (pColumn->get_Visibility() != Collapsed) totalWidth -= pColumn->get_ActualSize().Width; } for (int i = 0; i < m_cells.GetSize(); i++) { ColumnHeader* pColumn = m_ownerCtl->get_ColumnHeaderList()->m_columns[i]; UIElement* pCell = m_cells[i]; double columnWidth; if (pColumn->get_Visibility() != Collapsed) { if (i == 0) columnWidth = finalSize.Width - totalWidth - 16; else columnWidth = pColumn->get_ActualSize().Width; } else columnWidth = 0; pCell->Arrange(LDraw::RectD(x, 0, columnWidth/*pCell->m_availSize.Width*/, pCell->get_DesiredSize().Height)); //pCell->SetLayoutOffset(x, 0); pCell->m_computedLeft = x; if (pColumn->get_Visibility() != Collapsed) { height = MAX(height, pCell->get_ActualSize().Height); } x += columnWidth; } } #if 0 m_Button->m_expandedBBox.Width = finalSize.Width; m_Button->m_expandedBBox.Height = finalSize.Height; #endif // m_VisualTree->Arrange(finalSize); //Control::OnArrange(finalSize); if (m_Children) { //double x, y; if (m_Children->get_Visibility() != Collapsed) { //m_Children->SetLayoutOffset(16, height); // x = 16; // y = height; //m_Children->m_transformMatrix *= gmMatrix3::translate(16, 0); m_Children->Arrange(LDraw::RectD(16, height, finalSize.Width-16, m_Children->get_DesiredSize().Height)); } } }