diff --git a/libraries/ZWidget/include/zwidget/widgets/listview/listview.h b/libraries/ZWidget/include/zwidget/widgets/listview/listview.h index ad30cd17c..c7caca8d4 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 29346ad57..fe73ebdfa 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 663eb03a7..220169272 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();