[gnome-control-center/gnome-3-14] network: Don't save hidden configuration options



commit aa1d34c3455f7c22daf33fe9797824497f870b7f
Author: Bastien Nocera <hadess hadess net>
Date:   Wed Aug 13 18:26:19 2014 +0200

    network: Don't save hidden configuration options
    
    When switching from a particular IPv4 or IPv6 "addresses" method to
    another, make sure that "address", "DNS" and "routes" are applied or
    ignored depending on that method's capabilities.
    
    For example, when switching from manual to automatic IPv4 "addresses"
    method, we need to make sure that the old IP address, gateway, etc.
    aren't actually used in the new setting.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=734337

 panels/network/connection-editor/ce-page-ip4.c |   21 +++++++++++++++++----
 panels/network/connection-editor/ce-page-ip6.c |   22 +++++++++++++++++++---
 2 files changed, 36 insertions(+), 7 deletions(-)
---
diff --git a/panels/network/connection-editor/ce-page-ip4.c b/panels/network/connection-editor/ce-page-ip4.c
index f33e197..d60b738 100644
--- a/panels/network/connection-editor/ce-page-ip4.c
+++ b/panels/network/connection-editor/ce-page-ip4.c
@@ -705,7 +705,11 @@ ui_to_setting (CEPageIP4 *page)
         }
 
         addresses = g_ptr_array_new_with_free_func (free_addr);
-        children = gtk_container_get_children (GTK_CONTAINER (page->address_list));
+        if (g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_MANUAL))
+                children = gtk_container_get_children (GTK_CONTAINER (page->address_list));
+        else
+                children = NULL;
+
         for (l = children; l; l = l->next) {
                 GtkWidget *row = l->data;
                 GtkEntry *entry;
@@ -775,7 +779,12 @@ ui_to_setting (CEPageIP4 *page)
         }
 
         dns_servers = g_array_new (FALSE, FALSE, sizeof (guint));
-        children = gtk_container_get_children (GTK_CONTAINER (page->dns_list));
+        if (g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_AUTO) ||
+            g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_MANUAL))
+                children = gtk_container_get_children (GTK_CONTAINER (page->dns_list));
+        else
+                children = NULL;
+
         for (l = children; l; l = l->next) {
                 GtkWidget *row = l->data;
                 GtkEntry *entry;
@@ -803,9 +812,13 @@ ui_to_setting (CEPageIP4 *page)
         }
         g_list_free (children);
 
-
         routes = g_ptr_array_new_with_free_func (free_addr);
-        children = gtk_container_get_children (GTK_CONTAINER (page->routes_list));
+        if (g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_AUTO) ||
+            g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_MANUAL))
+                children = gtk_container_get_children (GTK_CONTAINER (page->routes_list));
+        else
+                children = NULL;
+
         for (l = children; l; l = l->next) {
                 GtkWidget *row = l->data;
                 GtkEntry *entry;
diff --git a/panels/network/connection-editor/ce-page-ip6.c b/panels/network/connection-editor/ce-page-ip6.c
index 5bc5af8..e5cffc1 100644
--- a/panels/network/connection-editor/ce-page-ip6.c
+++ b/panels/network/connection-editor/ce-page-ip6.c
@@ -682,7 +682,11 @@ ui_to_setting (CEPageIP6 *page)
         }
 
         nm_setting_ip6_config_clear_addresses (page->setting);
-        children = gtk_container_get_children (GTK_CONTAINER (page->address_list));
+        if (g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_MANUAL))
+                children = gtk_container_get_children (GTK_CONTAINER (page->address_list));
+        else
+                children = NULL;
+
         for (l = children; l; l = l->next) {
                 GtkWidget *row = l->data;
                 GtkEntry *entry;
@@ -753,7 +757,13 @@ ui_to_setting (CEPageIP6 *page)
         g_list_free (children);
 
         nm_setting_ip6_config_clear_dns (page->setting);
-        children = gtk_container_get_children (GTK_CONTAINER (page->dns_list));
+        if (g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO) ||
+            g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_DHCP) ||
+            g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_MANUAL))
+                children = gtk_container_get_children (GTK_CONTAINER (page->dns_list));
+        else
+                children = NULL;
+
         for (l = children; l; l = l->next) {
                 GtkWidget *row = l->data;
                 GtkEntry *entry;
@@ -782,7 +792,13 @@ ui_to_setting (CEPageIP6 *page)
         g_list_free (children);
 
         nm_setting_ip6_config_clear_routes (page->setting);
-        children = gtk_container_get_children (GTK_CONTAINER (page->routes_list));
+        if (g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO) ||
+            g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_DHCP) ||
+            g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_MANUAL))
+                children = gtk_container_get_children (GTK_CONTAINER (page->routes_list));
+        else
+                children = NULL;
+
         for (l = children; l; l = l->next) {
                 GtkWidget *row = l->data;
                 GtkEntry *entry;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]