| 58 | } |
| 59 | |
| 60 | void CTileLayoutUI::SetPos(RECT rc) |
| 61 | { |
| 62 | CControlUI::SetPos(rc); |
| 63 | rc = m_rcItem; |
| 64 | |
| 65 | // Adjust for inset |
| 66 | rc.left += m_rcInset.left; |
| 67 | rc.top += m_rcInset.top; |
| 68 | rc.right -= m_rcInset.right; |
| 69 | rc.bottom -= m_rcInset.bottom; |
| 70 | |
| 71 | if( m_items.GetSize() == 0) { |
| 72 | ProcessScrollBar(rc, 0, 0); |
| 73 | return; |
| 74 | } |
| 75 | |
| 76 | if( m_pVerticalScrollBar && m_pVerticalScrollBar->IsVisible() ) rc.right -= m_pVerticalScrollBar->GetFixedWidth(); |
| 77 | if( m_pHorizontalScrollBar && m_pHorizontalScrollBar->IsVisible() ) rc.bottom -= m_pHorizontalScrollBar->GetFixedHeight(); |
| 78 | |
| 79 | // Position the elements |
| 80 | if( m_szItem.cx > 0 ) m_nColumns = (rc.right - rc.left) / m_szItem.cx; |
| 81 | if( m_nColumns == 0 ) m_nColumns = 1; |
| 82 | |
| 83 | int cyNeeded = 0; |
| 84 | int cxWidth = (rc.right - rc.left) / m_nColumns; |
| 85 | if( m_pHorizontalScrollBar && m_pHorizontalScrollBar->IsVisible() ) |
| 86 | cxWidth = (rc.right - rc.left + m_pHorizontalScrollBar->GetScrollRange() ) / m_nColumns; ; |
| 87 | |
| 88 | int cyHeight = 0; |
| 89 | int iCount = 0; |
| 90 | POINT ptTile = { rc.left, rc.top }; |
| 91 | if( m_pVerticalScrollBar && m_pVerticalScrollBar->IsVisible() ) { |
| 92 | ptTile.y -= m_pVerticalScrollBar->GetScrollPos(); |
| 93 | } |
| 94 | int iPosX = rc.left; |
| 95 | if( m_pHorizontalScrollBar && m_pHorizontalScrollBar->IsVisible() ) { |
| 96 | iPosX -= m_pHorizontalScrollBar->GetScrollPos(); |
| 97 | ptTile.x = iPosX; |
| 98 | } |
| 99 | for( int it1 = 0; it1 < m_items.GetSize(); it1++ ) { |
| 100 | CControlUI* pControl = static_cast<CControlUI*>(m_items[it1]); |
| 101 | if( !pControl->IsVisible() ) continue; |
| 102 | if( pControl->IsFloat() ) { |
| 103 | SetFloatPos(it1); |
| 104 | continue; |
| 105 | } |
| 106 | |
| 107 | // Determine size |
| 108 | RECT rcTile = { ptTile.x, ptTile.y, ptTile.x + cxWidth, ptTile.y }; |
| 109 | if( (iCount % m_nColumns) == 0 ) |
| 110 | { |
| 111 | int iIndex = iCount; |
| 112 | for( int it2 = it1; it2 < m_items.GetSize(); it2++ ) { |
| 113 | CControlUI* pLineControl = static_cast<CControlUI*>(m_items[it2]); |
| 114 | if( !pLineControl->IsVisible() ) continue; |
| 115 | if( pLineControl->IsFloat() ) continue; |
| 116 | |
| 117 | RECT rcPadding = pLineControl->GetPadding(); |
nothing calls this directly
no test coverage detected