Blob Blame History Raw
From bbc6e18ba0c0c1da16019813ce8c0326adc2cf06 Mon Sep 17 00:00:00 2001
From: Jiri Popelka <jpopelka@redhat.com>
Date: Tue, 2 Apr 2013 16:13:26 +0200
Subject: [PATCH] firewall-applet: fix default zone hangling in 'shields-up'
 (RHBZ#947230)

default_zone_changed(): check/uncheck shields-up if something else
                        changes default zone
shieldsup_check_toggled(): do not change default zone if already changed
connection_established(): do not call getDefaultZone() twice
---
 src/firewall-applet | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/firewall-applet b/src/firewall-applet
index c547244..589af7a 100755
--- a/src/firewall-applet
+++ b/src/firewall-applet
@@ -42,6 +42,7 @@ from firewall.config import *
 from firewall.config.dbus import *
 from firewall.client import FirewallClient
 from firewall.dbus_utils import dbus_to_python
+from firewall.errors import *
 import dbus
 
 
@@ -370,9 +371,15 @@ class TrayApplet(object):
 
     def shieldsup_check_toggled(self, button):
         if button.get_active():
-            self.fw.setDefaultZone(self.settings.get_string("shields-up"))
+            zone = self.settings.get_string("shields-up")
         else:
-            self.fw.setDefaultZone(self.settings.get_string("shields-down"))
+            zone = self.settings.get_string("shields-down")
+
+        if self.fw.connected and self.fw.getDefaultZone() != zone:
+            try:
+                self.fw.setDefaultZone(zone)
+            except dbus.DBusException as e:
+                print("Error: %s" % e.message)
 
     def notification_check_toggled(self, button, settings, key):
         settings.set_boolean(key, button.get_active())
@@ -519,7 +526,7 @@ class TrayApplet(object):
             self.settings.reset("shields-down")
 
         self.shieldsup_check.handler_block(self.shieldsup_check_id)
-        if self.fw.getDefaultZone() == self.settings.get_string("shields-up"):
+        if self.default_zone == self.settings.get_string("shields-up"):
             self.shieldsup_check.set_active(True)
         else:
             self.shieldsup_check.set_active(False)
@@ -704,6 +711,13 @@ class TrayApplet(object):
         self.update_active_zones()
         self.update_tooltip()
 
+        # in case something else changes default zone
+        if self.default_zone == self.settings.get_string("shields-up"):
+            self.shieldsup_check.set_active(True)
+        else:
+            self.shieldsup_check.set_active(False)
+
+
     def _panic_mode(self, enable):
         self.panic_check.handler_block(self.panic_check_id)
         self.panic_check.set_active(enable)
-- 
1.8.1.4