void ListBox::notifyMousePressed(Widget* _sender, int _left, int _top, MouseButton _id) { if (MouseButton::Left != _id) return; if (_sender == mWidgetScroll) return; // если выделен клиент, то сбрасываем if (_sender == _getClientWidget()) { if (mIndexSelect != ITEM_NONE) { _selectIndex(mIndexSelect, false); mIndexSelect = ITEM_NONE; eventListChangePosition(this, mIndexSelect); } eventListMouseItemActivate(this, mIndexSelect); // если не клиент, то просчитывам } // ячейка может быть скрыта else if (_sender->getVisible()) { #if MYGUI_DEBUG_MODE == 1 _checkMapping("ListBox::notifyMousePressed"); MYGUI_ASSERT_RANGE(*_sender->_getInternalData<size_t>(), mWidgetLines.size(), "ListBox::notifyMousePressed"); MYGUI_ASSERT_RANGE(*_sender->_getInternalData<size_t>() + mTopIndex, mItemsInfo.size(), "ListBox::notifyMousePressed"); #endif size_t index = *_sender->_getInternalData<size_t>() + mTopIndex; if (mIndexSelect != index) { _selectIndex(mIndexSelect, false); _selectIndex(index, true); mIndexSelect = index; eventListChangePosition(this, mIndexSelect); } eventListMouseItemActivate(this, mIndexSelect); } _resetContainer(true); }
void MultiListBox::notifyListMouseItemActivate(ListBox* _sender, size_t _position) { eventListMouseItemActivate(this, BiIndexBase::convertToFace(_position)); }