Blob Blame History Raw
diff -up firewalld-0.3.9/src/firewall-config.RHBZ#993655 firewalld-0.3.9/src/firewall-config
--- firewalld-0.3.9/src/firewall-config.RHBZ#993655	2014-09-29 20:29:37.428805049 +0200
+++ firewalld-0.3.9/src/firewall-config	2014-09-29 20:35:50.956700639 +0200
@@ -1230,7 +1230,7 @@ class FirewallConfig(object):
         self.load_direct()
         self.load_lockdown_whitelist()
 
-    def load_zones(self):
+    def _update_zoneStore(self):
         active_zone = self.get_active_zone()
 
         if self.runtime_view:
@@ -1246,6 +1246,33 @@ class FirewallConfig(object):
         selection.set_mode(Gtk.SelectionMode.NONE)
 
         self.zoneStore.clear()
+
+        # zones
+        active_zones = self.fw.getActiveZones().keys()
+        for zone in zones:
+            if zone in active_zones:
+                self.zoneStore.append([zone, Pango.Weight.BOLD])
+            else:
+                self.zoneStore.append([zone, Pango.Weight.NORMAL])
+
+        if active_zone in zones:
+            _zone = active_zone
+        else:
+            _zone = self.defaultZoneLabel.get_text()
+
+        selection.set_mode(Gtk.SelectionMode.SINGLE)
+
+        iter = self.zoneStore.get_iter_first()
+        while iter:
+            if self.zoneStore.get_value(iter, 0) == _zone:
+                selection.select_iter(iter)
+                return
+            iter = self.zoneStore.iter_next(iter)
+        # fallback
+        selection.select_path(0)
+
+    def load_zones(self):
+        self.zoneStore.clear()
         self.serviceStore.clear()
         self.portStore.clear()
         self.forwardStore.clear()
@@ -1269,28 +1296,7 @@ class FirewallConfig(object):
                 obj = self.fw.config().getIcmpType(item)
                 self.icmpStore.append([False, obj.get_property("name")])
 
-        # zones
-        for zone in zones:
-            if zone == self.default_zone:
-                self.zoneStore.append([zone, Pango.Weight.BOLD])
-            else:
-                self.zoneStore.append([zone, Pango.Weight.NORMAL])
-
-        if active_zone in zones:
-            _zone = active_zone
-        else:
-            _zone = self.defaultZoneLabel.get_text()
-
-        selection.set_mode(Gtk.SelectionMode.SINGLE)
-
-        iter = self.zoneStore.get_iter_first()
-        while iter:
-            if self.zoneStore.get_value(iter, 0) == _zone:
-                selection.select_iter(iter)
-                return
-            iter = self.zoneStore.iter_next(iter)
-        # fallback
-        selection.select_path(0)
+        self._update_zoneStore()
 
     def get_active_service(self):
         selection = self.serviceConfServiceView.get_selection()
@@ -1580,6 +1586,7 @@ class FirewallConfig(object):
         self._add_interface(interface)
 
     def interface_removed_cb(self, zone, interface):
+        self.update_active_zones()
         if not self.runtime_view or zone != self.get_active_zone():
             return
         iter = self.interfaceStore.get_iter_first()
@@ -1588,7 +1595,6 @@ class FirewallConfig(object):
                 self.interfaceStore.remove(iter)
                 break
             iter = self.interfaceStore.iter_next(iter)
-        self.update_active_zones()
 
     def zone_of_interface_changed_cb(self, zone, interface):
         self.update_active_zones()
@@ -1740,8 +1746,6 @@ class FirewallConfig(object):
         self.load_lockdown_whitelist()
 
     def update_active_zones(self):
-        self.active_zones.clear()
-
         # remove all entries for the left menu
         left_menu_children = self.left_menu.get_children()
         for child in left_menu_children:
@@ -1761,6 +1765,9 @@ class FirewallConfig(object):
         if not self.fw.connected:
             return
 
+        self._update_zoneStore()
+
+        self.active_zones.clear()
         active_zones = self.fw.getActiveZones()
         if active_zones:
             self.active_zones = active_zones
@@ -1893,14 +1900,8 @@ class FirewallConfig(object):
             new_default_zone != self.default_zone)
 
     def default_zone_changed_cb(self, zone):
+        self.default_zone = zone
         self.defaultZoneLabel.set_text(zone)
-        iter = self.zoneStore.get_iter_first()
-        while iter:
-            if self.zoneStore.get_value(iter, 0) == zone:
-                self.zoneStore.set_value(iter, 1, Pango.Weight.BOLD)
-            else:
-                self.zoneStore.set_value(iter, 1, Pango.Weight.NORMAL)
-            iter = self.zoneStore.iter_next(iter)
 
     def onChangeZone(self, *args):
         active_zone = self.get_active_zone()