MCPcopy Create free account
hub / github.com/cinience/RedisStudio / SetPos

Method SetPos

DuiLib/Layout/UITileLayout.cpp:60–182  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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();

Callers

nothing calls this directly

Calls 13

IsVisibleMethod · 0.80
GetFixedWidthMethod · 0.80
GetFixedHeightMethod · 0.80
IsFloatMethod · 0.80
GetPaddingMethod · 0.80
GetMinWidthMethod · 0.80
GetMaxWidthMethod · 0.80
GetMinHeightMethod · 0.80
GetMaxHeightMethod · 0.80
GetSizeMethod · 0.45
GetScrollRangeMethod · 0.45
GetScrollPosMethod · 0.45

Tested by

no test coverage detected