From 9f4bfe015c3baa3a38ffcbc81b01387f4438fbf8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Mart=C3=AD?= <mvdan@mvdan.cc>
Date: Fri, 10 Jan 2014 18:03:02 +0100
Subject: [PATCH] Fix: Use PreferencesActivity resultCodes properly

This fixes useless restarts/reloads, and missing ones too.
---
 .../fdroid/fdroid/PreferencesActivity.java    | 25 +++++++++++--------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/src/org/fdroid/fdroid/PreferencesActivity.java b/src/org/fdroid/fdroid/PreferencesActivity.java
index 5491ce26c..109b08870 100644
--- a/src/org/fdroid/fdroid/PreferencesActivity.java
+++ b/src/org/fdroid/fdroid/PreferencesActivity.java
@@ -85,8 +85,7 @@ public class PreferencesActivity extends PreferenceActivity implements
                     pref.getText()));
     }
 
-
-    protected void updateSummary(String key) {
+    protected void updateSummary(String key, boolean changing) {
 
         if (key.equals(Preferences.PREF_UPD_INTERVAL)) {
             ListPreference pref = (ListPreference)findPreference(
@@ -122,20 +121,26 @@ public class PreferencesActivity extends PreferenceActivity implements
 
         } else if (key.equals(Preferences.PREF_THEME)) {
             entrySummary(key);
-            result |= RESULT_RESTART;
-            setResult(result);
+            if (changing) {
+                result |= RESULT_RESTART;
+                setResult(result);
+            }
 
         } else if (key.equals(Preferences.PREF_INCOMP_VER)) {
             onoffSummary(key, R.string.show_incompat_versions_on,
                 R.string.show_incompat_versions_off);
-            result ^= RESULT_RELOAD;
-            setResult(result);
+            if (changing) {
+                result ^= RESULT_RELOAD;
+                setResult(result);
+            }
 
         } else if (key.equals(Preferences.PREF_ROOTED)) {
             onoffSummary(key, R.string.rooted_on,
                 R.string.rooted_off);
-            result ^= RESULT_REFILTER;
-            setResult(result);
+            if (changing) {
+                result ^= RESULT_REFILTER;
+                setResult(result);
+            }
 
         } else if (key.equals(Preferences.PREF_IGN_TOUCH)) {
             onoffSummary(key, R.string.ignoreTouch_on,
@@ -163,7 +168,7 @@ public class PreferencesActivity extends PreferenceActivity implements
                             (OnSharedPreferenceChangeListener)this);
 
         for (String key : summariesToUpdate) {
-            updateSummary(key);
+            updateSummary(key, false);
         }
     }
 
@@ -188,7 +193,7 @@ public class PreferencesActivity extends PreferenceActivity implements
     public void onSharedPreferenceChanged(
             SharedPreferences sharedPreferences, String key) {
 
-        updateSummary(key);
+        updateSummary(key, true);
     }
 
 }