From 742e9b2f32eef1756fbb4a9da611d569fdee711c Mon Sep 17 00:00:00 2001
From: nift4 <nift4@protonmail.com>
Date: Sun, 23 Apr 2023 21:47:42 +0200
Subject: [PATCH] SystemUI: fix antiquated TunerActivity bugs

Change-Id: Ic99c951e90b10941124a8afef383f4016bff2bed
---
 .../android/systemui/tuner/TunerActivity.java | 21 ++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java
index 642ea5807aa8..1880bcbb6fbc 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java
@@ -20,6 +20,8 @@ import android.app.FragmentTransaction;
 import android.os.Bundle;
 import android.util.Log;
 
+import java.util.ArrayDeque;
+
 import androidx.preference.Preference;
 import androidx.preference.PreferenceFragment;
 import androidx.preference.PreferenceScreen;
@@ -42,6 +44,7 @@ public class TunerActivity extends CollapsingToolbarBaseActivity implements
 
     private final DemoModeController mDemoModeController;
     private final GlobalSettings mGlobalSettings;
+    private final ArrayDeque<String> titleStack = new ArrayDeque<>();
 
     @Inject
     TunerActivity(
@@ -83,7 +86,22 @@ public class TunerActivity extends CollapsingToolbarBaseActivity implements
 
     @Override
     public void onBackPressed() {
-        if (!getFragmentManager().popBackStackImmediate()) {
+        if (getFragmentManager().popBackStackImmediate()) {
+            String title = titleStack.poll();
+            if (title != null) {
+                setTitle(title);
+            }
+            try {
+                Fragment f = getFragmentManager().findFragmentById(R.id.content_frame);
+                Fragment fragment = (Fragment) f.getClass().newInstance();
+                fragment.setArguments(f.getArguments());
+                FragmentTransaction transaction = getFragmentManager().beginTransaction();
+                transaction.replace(R.id.content_frame, fragment);
+                transaction.commit();
+            } catch (InstantiationException | IllegalAccessException e) {
+                Log.d("TunerActivity", "Problem launching fragment", e);
+            }
+        } else {
             super.onBackPressed();
         }
     }
@@ -97,6 +115,7 @@ public class TunerActivity extends CollapsingToolbarBaseActivity implements
             b.putString(PreferenceFragment.ARG_PREFERENCE_ROOT, pref.getKey());
             fragment.setArguments(b);
             FragmentTransaction transaction = getFragmentManager().beginTransaction();
+            titleStack.push(getTitle().toString());
             setTitle(pref.getTitle());
             transaction.replace(R.id.content_frame, fragment);
             transaction.addToBackStack("PreferenceFragment");
-- 
GitLab