From 211a874c39d88013bdcff1cbbba7badf5c1ccc8f Mon Sep 17 00:00:00 2001 From: Sam Mortimer Date: Wed, 20 Dec 2017 23:02:47 -0800 Subject: [PATCH] lineage-sdk: Hide a pref group if all child prefs are themselves hidden *) The change https://review.lineageos.org/#/c/193263/ knowingly removed the functionality where a pref group itself would be removed if all child prefs were removed (see comments around PS8/9). *) bgcngm discovered cases where this is needed so add this functionality back. Change-Id: Ibe684a6a21a2989623df71b08c2f5241682988ac --- .../preference/ConstraintsHelper.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/sdk/src/java/lineageos/preference/ConstraintsHelper.java b/sdk/src/java/lineageos/preference/ConstraintsHelper.java index 48152255..65f269d9 100644 --- a/sdk/src/java/lineageos/preference/ConstraintsHelper.java +++ b/sdk/src/java/lineageos/preference/ConstraintsHelper.java @@ -372,13 +372,29 @@ public class ConstraintsHelper { return null; } + private void hidePreference(PreferenceManager mgr, Preference pref) { + pref.setVisible(false); + // Hide the group if nothing is visible + final PreferenceGroup group = getParent(pref, pref); + boolean allHidden = true; + for (int i = 0; i < group.getPreferenceCount(); i++) { + if (group.getPreference(i).isVisible()) { + allHidden = false; + break; + } + } + if (allHidden) { + group.setVisible(false); + } + } + public void summonReaper(PreferenceManager mgr) { synchronized (mDeathRow) { Set notReadyForReap = new ArraySet<>(); for (String dead : mDeathRow) { Preference deadPref = mgr.findPreference(dead); if (deadPref != null) { - deadPref.setVisible(false); + hidePreference(mgr, deadPref); } else { notReadyForReap.add(dead); }