void MultiList::notifyListSelectAccept(MyGUI::WidgetPtr _widget, size_t _position) { // наш евент eventListSelectAccept(this, _position); }
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); }
void MultiListBox::notifyListSelectAccept(ListBox* _sender, size_t _position) { // наш евент eventListSelectAccept(this, BiIndexBase::convertToFace(_position)); }
void ListBox::notifyMouseDoubleClick(Widget* _sender) { if (mIndexSelect != ITEM_NONE) eventListSelectAccept(this, mIndexSelect); }