Ejemplo n.º 1
0
	void ItemBox::notifyMouseButtonPressed(Widget* _sender, int _left, int _top, MouseButton _id)
	{
		mouseButtonPressed(_id);

		if ( MouseButton::Left == _id)
		{
			size_t old = mIndexSelect;

			if (_sender == _getClientWidget())
			{
				// сбрасываем выделение
				setIndexSelected(ITEM_NONE);
			}
			else
			{
				// индекс отправителя
				mDropSenderIndex = getIndexByWidget(_sender);

				// выделенный елемент
				setIndexSelected(mDropSenderIndex);
			}

			// смещение внутри виджета, куда кликнули мышкой
			mClickInWidget = InputManager::getInstance().getLastPressedPosition(MouseButton::Left) - _sender->getAbsolutePosition();

			// отсылаем событие
			eventMouseItemActivate(this, mIndexSelect);
			// смену позиции отсылаем только при реальном изменении
			if (old != mIndexSelect) eventChangeItemPosition(this, mIndexSelect);
		}

		eventNotifyItem(this, IBNotifyItemData(getIndexByWidget(_sender), IBNotifyItemData::MousePressed, _left, _top, _id));
	}
Ejemplo n.º 2
0
	void TabControl::setPropertyOverride(const std::string& _key, const std::string& _value)
	{
		if (_key == "ButtonWidth")
			setButtonDefaultWidth(utility::parseValue<int>(_value));
		else if (_key == "ButtonAutoWidth")
			setButtonAutoWidth(utility::parseValue<bool>(_value));
		else if (_key == "SmoothShow")
			setSmoothShow(utility::parseValue<bool>(_value));
		else if (_key == "SelectItem")
			setIndexSelected(utility::parseValue<size_t>(_value));
		else
		{
			Base::setPropertyOverride(_key, _value);
			return;
		}
		eventChangeProperty(this, _key, _value);
	}
Ejemplo n.º 3
0
	void ItemBox::clearIndexSelected()
	{
		setIndexSelected(ITEM_NONE);
	}
Ejemplo n.º 4
0
			//! Clear item selection
			void clearIndexSelected() { setIndexSelected(ITEM_NONE); }
Ejemplo n.º 5
0
			//! Select item
			void setItemSelected(ItemType _item) { setIndexSelected(getItemIndex(_item)); }
Ejemplo n.º 6
0
	void ComboBox::clearIndexSelected()
	{
		setIndexSelected(ITEM_NONE);
	}
Ejemplo n.º 7
0
 void MultiListBox::clearIndexSelected()
 {
     setIndexSelected(ITEM_NONE);
 }
Ejemplo n.º 8
0
	void TabControl::setItemSelected(TabItem* _item)
	{
		setIndexSelected(getItemIndex(_item));
	}
Ejemplo n.º 9
0
    void ListBox::onKeyButtonPressed(KeyCode _key, Char _char)
    {
        if (getItemCount() == 0)
        {
            Base::onKeyButtonPressed(_key, _char);
            return;
        }

        // очень секретный метод, запатентованный механизм движения курсора
        size_t sel = mIndexSelect;

        if (_key == KeyCode::ArrowUp)
        {
            if (sel != 0)
            {
                if (sel == ITEM_NONE)
                    sel = 0;
                else
                    sel --;
            }
        }
        else if (_key == KeyCode::ArrowDown)
        {
            if (sel == ITEM_NONE)
                sel = 0;
            else
                sel ++;

            if (sel >= getItemCount())
            {
                // старое значение
                sel = mIndexSelect;
            }
        }
        else if (_key == KeyCode::Home)
        {
            if (sel != 0)
                sel = 0;
        }
        else if (_key == KeyCode::End)
        {
            if (sel != (getItemCount() - 1))
            {
                sel = getItemCount() - 1;
            }
        }
        else if (_key == KeyCode::PageUp)
        {
            if (sel != 0)
            {
                if (sel == ITEM_NONE)
                {
                    sel = 0;
                }
                else
                {
                    size_t page = _getClientWidget()->getHeight() / mHeightLine;
                    if (sel <= page)
                        sel = 0;
                    else
                        sel -= page;
                }
            }
        }
        else if (_key == KeyCode::PageDown)
        {
            if (sel != (getItemCount() - 1))
            {
                if (sel == ITEM_NONE)
                {
                    sel = 0;
                }
                else
                {
                    sel += _getClientWidget()->getHeight() / mHeightLine;
                    if (sel >= getItemCount())
                        sel = getItemCount() - 1;
                }
            }
        }
        else if ((_key == KeyCode::Return) || (_key == KeyCode::NumpadEnter))
        {
            if (sel != ITEM_NONE)
            {
                //FIXME нас могут удалить
                eventListSelectAccept(this, sel);

                Base::onKeyButtonPressed(_key, _char);
                // выходим, так как изменили колличество строк
                return;
            }
        }

        if (sel != mIndexSelect)
        {
            _resetContainer(true);

            if (!isItemVisibleAt(sel))
            {
                beginToItemAt(sel);
                if (mWidgetScroll != nullptr)
                    _sendEventChangeScroll(mWidgetScroll->getScrollPosition());
            }
            setIndexSelected(sel);

            // изменилась позиция
            // FIXME нас могут удалить
            eventListChangePosition(this, mIndexSelect);
        }

        Base::onKeyButtonPressed(_key, _char);
    }