51 Base::_initialise(_style, _coord, _align, _info, _parent, _croppedParent, _creator, _name);
53 initialiseWidgetSkin(_info);
61 size_t ListCtrl::getHScrollPage()
63 return mScrollViewPage;
66 size_t ListCtrl::getVScrollPage()
68 return mScrollViewPage;
75 initialiseWidgetSkin(_info);
82 mDragLayer =
"DragAndDrop";
85 if (!properties.empty())
87 MapString::const_iterator iter = properties.end();
88 iter = properties.find(
"DragLayer");
89 if (iter != properties.end()) mDragLayer = iter->second;
94 if (*(*iter)->_getInternalData<std::string>() ==
"VScroll")
100 if (*(*iter)->_getInternalData<std::string>() ==
"HScroll")
106 else if (*(*iter)->_getInternalData<std::string>() ==
"Client")
124 void ListCtrl::shutdownWidgetSkin()
166 size_t widget_index = 0;
168 for (
size_t index=0; index<mItemsInfo.size(); ++index)
177 else if (top > ((mContentPosition.
top) + _getClientWidget()->
getHeight()))
186 if (index == _index ||
ITEM_NONE == _index)
193 IBDrawItemInfo data(index, mIndexSelect, mIndexActive, mIndexAccept, mIndexRefuse, _update,
false);
211 while (widget_index < mVectorItems.size())
213 Widget* item = mVectorItems[widget_index];
220 if (change && _needUpdateContetntSize)
232 if (_index == mVectorItems.size())
250 mVectorItems.push_back(item);
256 return mVectorItems[_index];
288 size_t index = mIndexActive;
322 for (
size_t pos=0; pos<mVectorItems.size(); ++pos)
324 Widget* item = mVectorItems[pos];
329 size_t index = calcIndexByWidget(item);
331 if (index < mItemsInfo.size())
334 mIndexActive = index;
352 if (_sender == _getClientWidget())
359 size_t index = calcIndexByWidget(_sender);
360 if (index < mItemsInfo.size())
373 mIndexAccept = (_set && _accept ) ? _index :
ITEM_NONE;
374 mIndexRefuse = (_set && !_accept) ? _index :
ITEM_NONE;
397 mItemsInfo[_index].data = _data;
417 if (_index ==
ITEM_NONE) _index = mItemsInfo.size();
423 mItemsInfo.insert(mItemsInfo.begin() + _index,
ItemDataInfo(_data));
428 if (mIndexSelect >= _index)
449 mItemsInfo.erase(mItemsInfo.begin() + _index);
454 if (mItemsInfo.empty())
458 else if ((mIndexSelect > _index) || (mIndexSelect == mItemsInfo.size()))
474 if (0 == mItemsInfo.size())
return;
508 if (_index == mIndexSelect)
return;
516 size_t index = mIndexSelect;
531 mIndexSelect = _index;
568 MYGUI_ASSERT(_widget,
"ListCtrl::getIndexByWidget : Widget == nullptr");
569 if (_widget == _getClientWidget())
return ITEM_NONE;
570 MYGUI_ASSERT(_widget->
getParent() == _getClientWidget(),
"ListCtrl::getIndexByWidget : Widget is not child");
572 size_t index = calcIndexByWidget(_widget);
580 for (VectorWidgetPtr::iterator iter=mVectorItems.begin(); iter!=mVectorItems.end(); ++iter)
582 if ((*iter)->isVisible())
584 if ((*iter)->getAbsoluteRect().inside(_point))
601 for (VectorWidgetPtr::iterator iter=mVectorItems.begin(); iter!=mVectorItems.end(); ++iter)
610 for (VectorWidgetPtr::iterator iter=mVectorItems.begin(); iter!=mVectorItems.end(); ++iter)
612 if ((*iter)->isVisible())
616 if (index == _index)
return (*iter);
644 if (
nullptr == mItemDrag)
651 mPointDragOffset = coord.
point();
694 size_t old = mIndexSelect;
696 if (_sender == _getClientWidget())
730 size_t index = calcIndexByWidget(_sender);
738 size_t old_index = mIndexActive;
751 mIndexActive = index;
766 if (index < mItemsInfo.size() && mIndexActive == index)
786 for (VectorItemInfo::const_iterator item=mItemsInfo.begin(); item!=mItemsInfo.end(); ++item)
788 if (size.
width < item->size.width)
789 size.
width = item->size.width;
790 size.
height += item->size.height;
800 mContentPosition.
top = (int)_index;
804 mContentPosition.
left = (int)_index;
807 setContentPosition(mContentPosition);
810 void ListCtrl::setContentPosition(
const IntPoint& _point)
812 mContentPosition = _point;
820 if (mContentSize.
height <= 0)
return;
822 int offset = mContentPosition.
top;
823 if (_rel < 0) offset += mScrollViewPage;
824 else offset -= mScrollViewPage;
829 else if (offset < 0) offset = 0;
831 if (mContentPosition.
top == offset)
return;
837 mContentPosition.
top = offset;
839 setContentPosition(mContentPosition);
854 IntSize ListCtrl::getContentSize()
859 IntPoint ListCtrl::getContentPosition()
861 return mContentPosition;
864 IntSize ListCtrl::getViewSize()
const
866 return _getClientWidget()->
getSize();
869 void ListCtrl::eraseContent()
875 Align ListCtrl::getContentAlign()
880 Widget* ListCtrl::_getClientWidget()
885 const Widget* ListCtrl::_getClientWidget()
const