fix set cursor position after back navigation

This commit is contained in:
chatlanin
2023-04-02 10:48:47 +03:00
parent d82d6a63a3
commit 84fc7a1976
4 changed files with 51 additions and 13 deletions

View File

@@ -178,6 +178,36 @@ namespace rrr::layers::gui
if (key.get_keycode() == try_engine::key::LEFTSHIFT || key.get_keycode() == try_engine::key::RIGHTSHIFT)
shift = true;
if (shift)
{
// удаление
if (shift && key.get_keycode() == try_engine::key::D)
{
em->execute(types::event_type::SHOW_DELETE_ONE_FILE_DIALOG, selected_file);
freeze = true;
}
// создание файла/директории
if (shift && key.get_keycode() == try_engine::key::A)
{
em->execute(types::event_type::SHOW_CREATE_FILE_DIALOG, nullptr);
freeze = true;
}
// перемещение в конец списка
if (shift && key.get_keycode() == try_engine::key::G)
{
cnt->increment_position(data->size());
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
em->execute(types::event_type::NAVIGATION_DOWN, nullptr);
set_delta(MOVE_DIRECTION::DOWN);
set_scroll();
}
return;
}
if (key.get_keycode() == try_engine::key::J)
{
cnt->increment_position(STEP_DOWN);
@@ -212,18 +242,17 @@ namespace rrr::layers::gui
set_scroll();
}
// удаление
if (shift && key.get_keycode() == try_engine::key::D)
// двойное нажатие перемещение в начало списка
if (key.get_keycode() == try_engine::key::G)
{
em->execute(types::event_type::SHOW_DELETE_ONE_FILE_DIALOG, selected_file);
freeze = true;
}
// создание файла/директории
if (shift && key.get_keycode() == try_engine::key::A)
{
em->execute(types::event_type::SHOW_CREATE_FILE_DIALOG, nullptr);
freeze = true;
++g_coutn;
if (g_coutn != 2) return;
cnt->increment_position(-data->size());
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
em->execute(types::event_type::NAVIGATION_UP, nullptr);
set_delta(MOVE_DIRECTION::UP);
set_scroll();
g_coutn = 0;
}
}
@@ -295,6 +324,7 @@ namespace rrr::layers::gui
if (big_content)
{
// как бы прокручиваем с начала списка
for (const auto& f : *data)
{
if (f.path != selected_file.path)