Beispiel #1
0
    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);
    }
Beispiel #2
0
	void MultiListBox::notifyListMouseItemActivate(ListBox* _sender, size_t _position)
	{
		eventListMouseItemActivate(this, BiIndexBase::convertToFace(_position));
	}