From d89a858dcd066fdaadf4f0018b1cc79acc92aaaf Mon Sep 17 00:00:00 2001 From: iota97 Date: Thu, 26 Mar 2020 10:59:08 +0100 Subject: [PATCH] Rember cheat scroll position --- Core/Config.cpp | 1 + Core/Config.h | 1 + UI/CwCheatScreen.cpp | 12 +++++++----- UI/CwCheatScreen.h | 1 + ext/native/ui/viewgroup.cpp | 4 ++++ ext/native/ui/viewgroup.h | 1 + 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Core/Config.cpp b/Core/Config.cpp index 65b24c8abe..31f8e26474 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -437,6 +437,7 @@ static ConfigSetting generalSettings[] = { ConfigSetting("AutoLoadSaveState", &g_Config.iAutoLoadSaveState, 0, true, true), ReportedConfigSetting("EnableCheats", &g_Config.bEnableCheats, false, true, true), ConfigSetting("CwCheatRefreshRate", &g_Config.iCwCheatRefreshRate, 77, true, true), + ConfigSetting("CwCheatScrollPosition", &g_Config.fCwCheatScrollPosition, 0.0f, true, true), ConfigSetting("ScreenshotsAsPNG", &g_Config.bScreenshotsAsPNG, false, true, true), ConfigSetting("UseFFV1", &g_Config.bUseFFV1, false), diff --git a/Core/Config.h b/Core/Config.h index 2c2894b4e2..c2d3d4738f 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -197,6 +197,7 @@ public: bool bEnableCheats; bool bReloadCheats; int iCwCheatRefreshRate; + float fCwCheatScrollPosition; int iBloomHack; //0 = off, 1 = safe, 2 = balanced, 3 = aggressive bool bBlockTransferGPU; bool bDisableSlowFramebufEffects; diff --git a/UI/CwCheatScreen.cpp b/UI/CwCheatScreen.cpp index f6fefceb45..2ab0a47a0a 100644 --- a/UI/CwCheatScreen.cpp +++ b/UI/CwCheatScreen.cpp @@ -97,15 +97,16 @@ void CwCheatScreen::CreateViews() { leftColumn->Add(new Choice(cw->T("Enable/Disable All")))->OnClick.Handle(this, &CwCheatScreen::OnEnableAll); leftColumn->Add(new PopupSliderChoice(&g_Config.iCwCheatRefreshRate, 1, 1000, cw->T("Refresh Rate"), 1, screenManager())); - ScrollView *rightScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(0.5f)); - rightScroll->SetTag("CwCheats"); - rightScroll->SetScrollToTop(false); + rightScroll_ = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(0.5f)); + rightScroll_->SetTag("CwCheats"); + rightScroll_->SetScrollToTop(false); + rightScroll_->ScrollTo(g_Config.fCwCheatScrollPosition); LinearLayout *rightColumn = new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(200, FILL_PARENT, actionMenuMargins)); LayoutParams *layout = new LayoutParams(500, 50, LP_PLAIN); - rightScroll->Add(rightColumn); + rightScroll_->Add(rightColumn); root_->Add(leftColumn); - root_->Add(rightScroll); + root_->Add(rightScroll_); rightColumn->Add(new ItemHeader(cw->T("Cheats"))); for (size_t i = 0; i < formattedList_.size(); i++) { name = formattedList_[i].c_str(); @@ -129,6 +130,7 @@ void CwCheatScreen::onFinish(DialogResult result) { if (MIPSComp::jit) { MIPSComp::jit->ClearCache(); } + g_Config.fCwCheatScrollPosition = rightScroll_->GetScrollPosition(); } UI::EventReturn CwCheatScreen::OnEnableAll(UI::EventParams ¶ms) { diff --git a/UI/CwCheatScreen.h b/UI/CwCheatScreen.h index 3a264046c5..a51c94afbe 100644 --- a/UI/CwCheatScreen.h +++ b/UI/CwCheatScreen.h @@ -46,6 +46,7 @@ protected: private: UI::EventReturn OnCheckBox(UI::EventParams ¶ms); std::vector formattedList_; + UI::ScrollView *rightScroll_; }; // TODO: Instead just hook the OnClick event on a regular checkbox. diff --git a/ext/native/ui/viewgroup.cpp b/ext/native/ui/viewgroup.cpp index d0961078eb..7d188743f0 100644 --- a/ext/native/ui/viewgroup.cpp +++ b/ext/native/ui/viewgroup.cpp @@ -867,6 +867,10 @@ void ScrollView::SetVisibility(Visibility visibility) { } } +float ScrollView::GetScrollPosition() { + return scrollPos_; +} + void ScrollView::ScrollTo(float newScrollPos) { scrollTarget_ = newScrollPos; scrollToTarget_ = true; diff --git a/ext/native/ui/viewgroup.h b/ext/native/ui/viewgroup.h index 28d788e5ff..286f922925 100644 --- a/ext/native/ui/viewgroup.h +++ b/ext/native/ui/viewgroup.h @@ -241,6 +241,7 @@ public: void ScrollTo(float newScrollPos); void ScrollToBottom(); void ScrollRelative(float distance); + float GetScrollPosition(); bool CanScroll() const; void Update() override;