Reset field cursor position when it leaves focus

This commit is contained in:
BjossiAlfreds 2024-10-18 10:56:48 +00:00
parent b26be3ff5d
commit c49a703467
3 changed files with 23 additions and 0 deletions

View file

@ -138,6 +138,7 @@ typedef struct
void M_PushMenu(menuframework_s* menu);
void Field_ResetCursor(menuframework_s *m);
qboolean Field_Key(menufield_s *field, int key);
void Menu_AddItem(menuframework_s *menu, void *item);

View file

@ -325,12 +325,19 @@ Default_MenuKey(menuframework_s *m, int key)
switch (menu_key)
{
case K_ESCAPE:
if (m)
{
Field_ResetCursor(m);
}
M_PopMenu();
return menu_out_sound;
case K_UPARROW:
if (m)
{
Field_ResetCursor(m);
m->cursor--;
Menu_AdjustCursor(m, -1);
sound = menu_move_sound;
@ -340,6 +347,8 @@ Default_MenuKey(menuframework_s *m, int key)
case K_DOWNARROW:
if (m)
{
Field_ResetCursor(m);
m->cursor++;
Menu_AdjustCursor(m, 1);
sound = menu_move_sound;

View file

@ -215,6 +215,19 @@ Field_Draw(menufield_s *f)
}
}
void
Field_ResetCursor(menuframework_s *m)
{
menucommon_s *item = Menu_ItemAtCursor(m);
if (item && item->type == MTYPE_FIELD)
{
menufield_s *f = (menufield_s *)item;
f->cursor = strlen(f->buffer);
}
}
extern int keydown[];
qboolean