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