mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-18 05:58:19 +00:00
Merge pull request #8999 from dobrykafe/pr-listbox-qol
Add support for vertical arrow key navigation in multi-column listboxes
This commit is contained in:
commit
b6f80e5375
|
@ -408,6 +408,10 @@ bool CUi::OnInput(const IInput::CEvent &Event)
|
||||||
m_HotkeysPressed |= HOTKEY_UP;
|
m_HotkeysPressed |= HOTKEY_UP;
|
||||||
else if(Event.m_Key == KEY_DOWN)
|
else if(Event.m_Key == KEY_DOWN)
|
||||||
m_HotkeysPressed |= HOTKEY_DOWN;
|
m_HotkeysPressed |= HOTKEY_DOWN;
|
||||||
|
else if(Event.m_Key == KEY_LEFT)
|
||||||
|
m_HotkeysPressed |= HOTKEY_LEFT;
|
||||||
|
else if(Event.m_Key == KEY_RIGHT)
|
||||||
|
m_HotkeysPressed |= HOTKEY_RIGHT;
|
||||||
else if(Event.m_Key == KEY_MOUSE_WHEEL_UP)
|
else if(Event.m_Key == KEY_MOUSE_WHEEL_UP)
|
||||||
m_HotkeysPressed |= HOTKEY_SCROLL_UP;
|
m_HotkeysPressed |= HOTKEY_SCROLL_UP;
|
||||||
else if(Event.m_Key == KEY_MOUSE_WHEEL_DOWN)
|
else if(Event.m_Key == KEY_MOUSE_WHEEL_DOWN)
|
||||||
|
|
|
@ -446,14 +446,16 @@ public:
|
||||||
HOTKEY_ESCAPE = 1 << 1,
|
HOTKEY_ESCAPE = 1 << 1,
|
||||||
HOTKEY_UP = 1 << 2,
|
HOTKEY_UP = 1 << 2,
|
||||||
HOTKEY_DOWN = 1 << 3,
|
HOTKEY_DOWN = 1 << 3,
|
||||||
HOTKEY_DELETE = 1 << 4,
|
HOTKEY_LEFT = 1 << 4,
|
||||||
HOTKEY_TAB = 1 << 5,
|
HOTKEY_RIGHT = 1 << 5,
|
||||||
HOTKEY_SCROLL_UP = 1 << 6,
|
HOTKEY_DELETE = 1 << 6,
|
||||||
HOTKEY_SCROLL_DOWN = 1 << 7,
|
HOTKEY_TAB = 1 << 7,
|
||||||
HOTKEY_PAGE_UP = 1 << 8,
|
HOTKEY_SCROLL_UP = 1 << 8,
|
||||||
HOTKEY_PAGE_DOWN = 1 << 9,
|
HOTKEY_SCROLL_DOWN = 1 << 9,
|
||||||
HOTKEY_HOME = 1 << 10,
|
HOTKEY_PAGE_UP = 1 << 10,
|
||||||
HOTKEY_END = 1 << 11,
|
HOTKEY_PAGE_DOWN = 1 << 11,
|
||||||
|
HOTKEY_HOME = 1 << 12,
|
||||||
|
HOTKEY_END = 1 << 13,
|
||||||
};
|
};
|
||||||
|
|
||||||
void ResetUIElement(CUIElement &UIElement) const;
|
void ResetUIElement(CUIElement &UIElement) const;
|
||||||
|
|
|
@ -100,8 +100,12 @@ void CListBox::DoStart(float RowHeight, int NumItems, int ItemsPerRow, int RowsP
|
||||||
if(m_Active && !Input()->ModifierIsPressed() && !Input()->ShiftIsPressed() && !Input()->AltIsPressed())
|
if(m_Active && !Input()->ModifierIsPressed() && !Input()->ShiftIsPressed() && !Input()->AltIsPressed())
|
||||||
{
|
{
|
||||||
if(Ui()->ConsumeHotkey(CUi::HOTKEY_DOWN))
|
if(Ui()->ConsumeHotkey(CUi::HOTKEY_DOWN))
|
||||||
m_ListBoxNewSelOffset += 1;
|
m_ListBoxNewSelOffset += m_ListBoxItemsPerRow;
|
||||||
else if(Ui()->ConsumeHotkey(CUi::HOTKEY_UP))
|
else if(Ui()->ConsumeHotkey(CUi::HOTKEY_UP))
|
||||||
|
m_ListBoxNewSelOffset -= m_ListBoxItemsPerRow;
|
||||||
|
else if(Ui()->ConsumeHotkey(CUi::HOTKEY_RIGHT) && m_ListBoxItemsPerRow > 1)
|
||||||
|
m_ListBoxNewSelOffset += 1;
|
||||||
|
else if(Ui()->ConsumeHotkey(CUi::HOTKEY_LEFT) && m_ListBoxItemsPerRow > 1)
|
||||||
m_ListBoxNewSelOffset -= 1;
|
m_ListBoxNewSelOffset -= 1;
|
||||||
else if(Ui()->ConsumeHotkey(CUi::HOTKEY_PAGE_UP))
|
else if(Ui()->ConsumeHotkey(CUi::HOTKEY_PAGE_UP))
|
||||||
m_ListBoxNewSelOffset = -ItemsPerRow * RowsPerScroll * 4;
|
m_ListBoxNewSelOffset = -ItemsPerRow * RowsPerScroll * 4;
|
||||||
|
|
Loading…
Reference in a new issue