//! Move all elements so last becomes visible void beginToItemLast() { if (getItemCount()) beginToItemAt(getItemCount() - 1); }
//! Move all elements so selected becomes visible void beginToItemSelected() { if (getIndexSelected() != ITEM_NONE) beginToItemAt(getIndexSelected()); }
//! Move all elements so specified becomes visible void beginToItem(ItemType _item) { beginToItemAt(getItemIndex(_item)); }
//! Move all elements so first becomes visible void beginToItemFirst() { if (getItemCount()) beginToItemAt(0); }
void ComboBox::beginToItemFirst() { if (getItemCount()) beginToItemAt(0); }
void ComboBox::beginToItemLast() { if (getItemCount()) beginToItemAt(getItemCount() - 1); }
void TabControl::beginToItemLast() { if (getItemCount()) beginToItemAt(getItemCount() - 1); }
void TabControl::beginToItemSelected() { if (getIndexSelected() != ITEM_NONE) beginToItemAt(getIndexSelected()); }
void TabControl::beginToItemFirst() { if (getItemCount()) beginToItemAt(0); }
void TabControl::beginToItem(TabItem* _item) { beginToItemAt(getItemIndex(_item)); }
void ListBox::beginToItemLast() { if (getItemCount()) beginToItemAt(getItemCount() - 1); }
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 ListBox::beginToItemFirst() { if (getItemCount()) beginToItemAt(0); }