MCPcopy Create free account
hub / github.com/MyGUI/mygui / _updateAllVisible

Method _updateAllVisible

MyGUIEngine/src/MyGUI_ItemBox.cpp:117–169  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

115 }
116
117 void ItemBox::_updateAllVisible(bool _redraw)
118 {
119 int count_visible = 0;
120 if (mAlignVert)
121 {
122 count_visible = (_getClientWidget()->getHeight() / mSizeItem.height) + 2;
123 }
124 else
125 {
126 count_visible = (_getClientWidget()->getWidth() / mSizeItem.width) + 2;
127 }
128
129 size_t start = (mFirstVisibleIndex * mCountItemInLine);
130 size_t count = (count_visible * mCountItemInLine) + start;
131
132 size_t index = 0;
133 for (size_t pos = start; pos < count; ++pos, ++index)
134 {
135 // дальше нет айтемов
136 if (pos >= mItemsInfo.size())
137 break;
138
139 Widget* item = getItemWidget(index);
140 if (mAlignVert)
141 {
142 item->setPosition(
143 ((int)index % mCountItemInLine) * mSizeItem.width - mContentPosition.left,
144 (((int)index / mCountItemInLine) * mSizeItem.height) - mFirstOffsetIndex);
145 }
146 else
147 {
148 item->setPosition(
149 (((int)index / mCountItemInLine) * mSizeItem.width) - mFirstOffsetIndex,
150 ((int)index % mCountItemInLine) * mSizeItem.height - mContentPosition.top);
151 }
152
153 item->setSize(mSizeItem);
154 item->setVisible(true);
155
156 if (_redraw)
157 {
158 IBDrawItemInfo data(pos, mIndexSelect, mIndexActive, mIndexAccept, mIndexRefuse, true, false);
159 requestDrawItem(this, item, data);
160 }
161 }
162
163 // все виджеты еще есть, то их надо бы скрыть
164 while (index < mVectorItems.size())
165 {
166 mVectorItems[index]->setVisible(false);
167 index++;
168 }
169 }
170
171 Widget* ItemBox::getItemWidget(size_t _index)
172 {

Callers

nothing calls this directly

Calls 7

requestDrawItemFunction · 0.85
getHeightMethod · 0.45
getWidthMethod · 0.45
sizeMethod · 0.45
setPositionMethod · 0.45
setSizeMethod · 0.45
setVisibleMethod · 0.45

Tested by

no test coverage detected