From 8ad15de138dbb2894e83c5ce8c05f90ec1142add Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Fri, 5 Jan 2024 00:23:17 +0100 Subject: [PATCH] Remember last selected item --- .../zwidget/widgets/listview/listview.h | 1 + .../ZWidget/src/widgets/listview/listview.cpp | 18 ++++++++++++------ src/launcher/launcherwindow.cpp | 6 ++++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/libraries/ZWidget/include/zwidget/widgets/listview/listview.h b/libraries/ZWidget/include/zwidget/widgets/listview/listview.h index ad30cd17c2..c7caca8d44 100644 --- a/libraries/ZWidget/include/zwidget/widgets/listview/listview.h +++ b/libraries/ZWidget/include/zwidget/widgets/listview/listview.h @@ -14,6 +14,7 @@ public: void AddItem(const std::string& text); int GetSelectedItem() const { return selectedItem; } + void SetSelectedItem(int index); void ScrollToItem(int index); void Activate(); diff --git a/libraries/ZWidget/src/widgets/listview/listview.cpp b/libraries/ZWidget/src/widgets/listview/listview.cpp index 29346ad574..fe73ebdfad 100644 --- a/libraries/ZWidget/src/widgets/listview/listview.cpp +++ b/libraries/ZWidget/src/widgets/listview/listview.cpp @@ -22,6 +22,15 @@ void ListView::Activate() OnActivated(); } +void ListView::SetSelectedItem(int index) +{ + if (selectedItem != index && index >= 0 && index < items.size()) + { + selectedItem = index; + Update(); + } +} + void ListView::ScrollToItem(int index) { double itemHeight = 20.0; @@ -95,8 +104,7 @@ void ListView::OnMouseDown(const Point& pos, int key) int index = (int)((pos.y - 5.0 + scrollbar->GetPosition()) / 20.0); if (index >= 0 && (size_t)index < items.size()) { - selectedItem = index; - Update(); + SetSelectedItem(index); ScrollToItem(selectedItem); } } @@ -128,8 +136,7 @@ void ListView::OnKeyDown(EInputKey key) { if (selectedItem + 1 < (int)items.size()) { - selectedItem++; - Update(); + SetSelectedItem(selectedItem + 1); } ScrollToItem(selectedItem); } @@ -137,8 +144,7 @@ void ListView::OnKeyDown(EInputKey key) { if (selectedItem > 0) { - selectedItem--; - Update(); + SetSelectedItem(selectedItem - 1); } ScrollToItem(selectedItem); } diff --git a/src/launcher/launcherwindow.cpp b/src/launcher/launcherwindow.cpp index 663eb03a75..220169272d 100644 --- a/src/launcher/launcherwindow.cpp +++ b/src/launcher/launcherwindow.cpp @@ -139,6 +139,12 @@ LauncherWindow::LauncherWindow(WadStuff* wads, int numwads, int defaultiwad, int GamesList->AddItem(work.GetChars()); } + if (defaultiwad >= 0 && defaultiwad < numwads) + { + GamesList->SetSelectedItem(defaultiwad); + GamesList->ScrollToItem(defaultiwad); + } + Logo->SetImage(Image::LoadResource("widgets/banner.png")); GamesList->SetFocus();