Index: /trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.cpp	(revision 87304)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.cpp	(revision 87305)
@@ -79,4 +79,31 @@
 }
 
+void UIDetailsWidgetNATNetwork::updateButtonStates()
+{
+//    if (m_oldData != m_newData)
+//        printf("Network: %d, %s, %s, %d, %d, %d\n",
+//               m_newData.m_fEnabled,
+//               m_newData.m_strName.toUtf8().constData(),
+//               m_newData.m_strCIDR.toUtf8().constData(),
+//               m_newData.m_fSupportsDHCP,
+//               m_newData.m_fSupportsIPv6,
+//               m_newData.m_fAdvertiseDefaultIPv6Route);
+
+    /* Update 'Apply' / 'Reset' button states: */
+    if (m_pButtonBoxOptions)
+    {
+        m_pButtonBoxOptions->button(QDialogButtonBox::Cancel)->setEnabled(m_oldData != m_newData);
+        m_pButtonBoxOptions->button(QDialogButtonBox::Ok)->setEnabled(m_oldData != m_newData);
+    }
+    if (m_pButtonBoxForwarding)
+    {
+        m_pButtonBoxForwarding->button(QDialogButtonBox::Cancel)->setEnabled(m_oldData != m_newData);
+        m_pButtonBoxForwarding->button(QDialogButtonBox::Ok)->setEnabled(m_oldData != m_newData);
+    }
+
+    /* Notify listeners as well: */
+    emit sigDataChanged(m_oldData != m_newData);
+}
+
 void UIDetailsWidgetNATNetwork::retranslateUi()
 {
@@ -499,29 +526,2 @@
     m_fHoldPosition = false;
 }
-
-void UIDetailsWidgetNATNetwork::updateButtonStates()
-{
-//    if (m_oldData != m_newData)
-//        printf("Network: %d, %s, %s, %d, %d, %d\n",
-//               m_newData.m_fEnabled,
-//               m_newData.m_strName.toUtf8().constData(),
-//               m_newData.m_strCIDR.toUtf8().constData(),
-//               m_newData.m_fSupportsDHCP,
-//               m_newData.m_fSupportsIPv6,
-//               m_newData.m_fAdvertiseDefaultIPv6Route);
-
-    /* Update 'Apply' / 'Reset' button states: */
-    if (m_pButtonBoxOptions)
-    {
-        m_pButtonBoxOptions->button(QDialogButtonBox::Cancel)->setEnabled(m_oldData != m_newData);
-        m_pButtonBoxOptions->button(QDialogButtonBox::Ok)->setEnabled(m_oldData != m_newData);
-    }
-    if (m_pButtonBoxForwarding)
-    {
-        m_pButtonBoxForwarding->button(QDialogButtonBox::Cancel)->setEnabled(m_oldData != m_newData);
-        m_pButtonBoxForwarding->button(QDialogButtonBox::Ok)->setEnabled(m_oldData != m_newData);
-    }
-
-    /* Notify listeners as well: */
-    emit sigDataChanged(m_oldData != m_newData);
-}
Index: /trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.h	(revision 87304)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.h	(revision 87305)
@@ -125,6 +125,12 @@
     void setData(const UIDataNATNetwork &data, bool fHoldPosition = false);
 
-    /** Revalidates changes. */
-    bool revalidate();
+    /** @name Change handling stuff.
+      * @{ */
+        /** Revalidates changes. */
+        bool revalidate();
+
+        /** Updates button states. */
+        void updateButtonStates();
+    /** @} */
 
 protected:
@@ -181,10 +187,4 @@
         /** Loads 'Forwarding' data. */
         void loadDataForForwarding();
-    /** @} */
-
-    /** @name Change handling stuff.
-      * @{ */
-        /** Updates button states. */
-        void updateButtonStates();
     /** @} */
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UINetworkManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UINetworkManager.cpp	(revision 87304)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UINetworkManager.cpp	(revision 87305)
@@ -1056,5 +1056,4 @@
     /* Update actions availability: */
     m_pActionPool->action(UIActionIndexMN_M_Network_S_Remove)->setEnabled(pItem);
-    m_pActionPool->action(UIActionIndexMN_M_Network_T_Details)->setEnabled(pItem);
 
     /* Check NAT network details-widget: */
@@ -1108,91 +1107,89 @@
 
     /* Revalidate NAT network details: */
-    if (!m_pDetailsWidgetNATNetwork->revalidate())
-        return;
-
-    /* Get item data: */
-    UIDataNATNetwork oldData = *pItem;
-    UIDataNATNetwork newData = m_pDetailsWidgetNATNetwork->data();
-
-    /* Get VirtualBox for further activities: */
-    CVirtualBox comVBox = uiCommon().virtualBox();
-
-    /* Find corresponding network: */
-    CNATNetwork comNetwork = comVBox.FindNATNetworkByName(oldData.m_strName);
-
-    /* Show error message if necessary: */
-    if (!comVBox.isOk() || comNetwork.isNull())
-        msgCenter().cannotFindNATNetwork(comVBox, oldData.m_strName, this);
-    else
-    {
-        /* Save whether NAT network is enabled: */
-        if (comNetwork.isOk() && newData.m_fEnabled != oldData.m_fEnabled)
-            comNetwork.SetEnabled(newData.m_fEnabled);
-        /* Save NAT network name: */
-        if (comNetwork.isOk() && newData.m_strName != oldData.m_strName)
-            comNetwork.SetNetworkName(newData.m_strName);
-        /* Save NAT network CIDR: */
-        if (comNetwork.isOk() && newData.m_strCIDR != oldData.m_strCIDR)
-            comNetwork.SetNetwork(newData.m_strCIDR);
-        /* Save whether NAT network needs DHCP server: */
-        if (comNetwork.isOk() && newData.m_fSupportsDHCP != oldData.m_fSupportsDHCP)
-            comNetwork.SetNeedDhcpServer(newData.m_fSupportsDHCP);
-        /* Save whether NAT network supports IPv6: */
-        if (comNetwork.isOk() && newData.m_fSupportsIPv6 != oldData.m_fSupportsIPv6)
-            comNetwork.SetIPv6Enabled(newData.m_fSupportsIPv6);
-        /* Save whether NAT network should advertise default IPv6 route: */
-        if (comNetwork.isOk() && newData.m_fAdvertiseDefaultIPv6Route != oldData.m_fAdvertiseDefaultIPv6Route)
-            comNetwork.SetAdvertiseDefaultIPv6RouteEnabled(newData.m_fAdvertiseDefaultIPv6Route);
-
-        /* Save IPv4 forwarding rules: */
-        if (comNetwork.isOk() && newData.m_rules4 != oldData.m_rules4)
-        {
-            UIPortForwardingDataList oldRules = oldData.m_rules4;
-
-            /* Remove rules to be removed: */
-            foreach (const UIDataPortForwardingRule &oldRule, oldData.m_rules4)
-                if (comNetwork.isOk() && !newData.m_rules4.contains(oldRule))
-                {
-                    comNetwork.RemovePortForwardRule(false /* IPv6? */, oldRule.name);
-                    oldRules.removeAll(oldRule);
-                }
-            /* Add rules to be added: */
-            foreach (const UIDataPortForwardingRule &newRule, newData.m_rules4)
-                if (comNetwork.isOk() && !oldRules.contains(newRule))
-                {
-                    comNetwork.AddPortForwardRule(false /* IPv6? */, newRule.name, newRule.protocol,
-                                                  newRule.hostIp, newRule.hostPort.value(),
-                                                  newRule.guestIp, newRule.guestPort.value());
-                    oldRules.append(newRule);
-                }
-        }
-        /* Save IPv6 forwarding rules: */
-        if (comNetwork.isOk() && newData.m_rules6 != oldData.m_rules6)
-        {
-            UIPortForwardingDataList oldRules = oldData.m_rules6;
-
-            /* Remove rules to be removed: */
-            foreach (const UIDataPortForwardingRule &oldRule, oldData.m_rules6)
-                if (comNetwork.isOk() && !newData.m_rules6.contains(oldRule))
-                {
-                    comNetwork.RemovePortForwardRule(true /* IPv6? */, oldRule.name);
-                    oldRules.removeAll(oldRule);
-                }
-            /* Add rules to be added: */
-            foreach (const UIDataPortForwardingRule &newRule, newData.m_rules6)
-                if (comNetwork.isOk() && !oldRules.contains(newRule))
-                {
-                    comNetwork.AddPortForwardRule(true /* IPv6? */, newRule.name, newRule.protocol,
-                                                  newRule.hostIp, newRule.hostPort.value(),
-                                                  newRule.guestIp, newRule.guestPort.value());
-                    oldRules.append(newRule);
-                }
-        }
+    if (m_pDetailsWidgetNATNetwork->revalidate())
+    {
+        /* Get item data: */
+        UIDataNATNetwork oldData = *pItem;
+        UIDataNATNetwork newData = m_pDetailsWidgetNATNetwork->data();
+
+        /* Get VirtualBox for further activities: */
+        CVirtualBox comVBox = uiCommon().virtualBox();
+
+        /* Find corresponding network: */
+        CNATNetwork comNetwork = comVBox.FindNATNetworkByName(oldData.m_strName);
 
         /* Show error message if necessary: */
-        if (!comNetwork.isOk())
-            msgCenter().cannotSaveNATNetworkParameter(comNetwork, this);
+        if (!comVBox.isOk() || comNetwork.isNull())
+            msgCenter().cannotFindNATNetwork(comVBox, oldData.m_strName, this);
         else
         {
+            /* Save whether NAT network is enabled: */
+            if (comNetwork.isOk() && newData.m_fEnabled != oldData.m_fEnabled)
+                comNetwork.SetEnabled(newData.m_fEnabled);
+            /* Save NAT network name: */
+            if (comNetwork.isOk() && newData.m_strName != oldData.m_strName)
+                comNetwork.SetNetworkName(newData.m_strName);
+            /* Save NAT network CIDR: */
+            if (comNetwork.isOk() && newData.m_strCIDR != oldData.m_strCIDR)
+                comNetwork.SetNetwork(newData.m_strCIDR);
+            /* Save whether NAT network needs DHCP server: */
+            if (comNetwork.isOk() && newData.m_fSupportsDHCP != oldData.m_fSupportsDHCP)
+                comNetwork.SetNeedDhcpServer(newData.m_fSupportsDHCP);
+            /* Save whether NAT network supports IPv6: */
+            if (comNetwork.isOk() && newData.m_fSupportsIPv6 != oldData.m_fSupportsIPv6)
+                comNetwork.SetIPv6Enabled(newData.m_fSupportsIPv6);
+            /* Save whether NAT network should advertise default IPv6 route: */
+            if (comNetwork.isOk() && newData.m_fAdvertiseDefaultIPv6Route != oldData.m_fAdvertiseDefaultIPv6Route)
+                comNetwork.SetAdvertiseDefaultIPv6RouteEnabled(newData.m_fAdvertiseDefaultIPv6Route);
+
+            /* Save IPv4 forwarding rules: */
+            if (comNetwork.isOk() && newData.m_rules4 != oldData.m_rules4)
+            {
+                UIPortForwardingDataList oldRules = oldData.m_rules4;
+
+                /* Remove rules to be removed: */
+                foreach (const UIDataPortForwardingRule &oldRule, oldData.m_rules4)
+                    if (comNetwork.isOk() && !newData.m_rules4.contains(oldRule))
+                    {
+                        comNetwork.RemovePortForwardRule(false /* IPv6? */, oldRule.name);
+                        oldRules.removeAll(oldRule);
+                    }
+                /* Add rules to be added: */
+                foreach (const UIDataPortForwardingRule &newRule, newData.m_rules4)
+                    if (comNetwork.isOk() && !oldRules.contains(newRule))
+                    {
+                        comNetwork.AddPortForwardRule(false /* IPv6? */, newRule.name, newRule.protocol,
+                                                      newRule.hostIp, newRule.hostPort.value(),
+                                                      newRule.guestIp, newRule.guestPort.value());
+                        oldRules.append(newRule);
+                    }
+            }
+            /* Save IPv6 forwarding rules: */
+            if (comNetwork.isOk() && newData.m_rules6 != oldData.m_rules6)
+            {
+                UIPortForwardingDataList oldRules = oldData.m_rules6;
+
+                /* Remove rules to be removed: */
+                foreach (const UIDataPortForwardingRule &oldRule, oldData.m_rules6)
+                    if (comNetwork.isOk() && !newData.m_rules6.contains(oldRule))
+                    {
+                        comNetwork.RemovePortForwardRule(true /* IPv6? */, oldRule.name);
+                        oldRules.removeAll(oldRule);
+                    }
+                /* Add rules to be added: */
+                foreach (const UIDataPortForwardingRule &newRule, newData.m_rules6)
+                    if (comNetwork.isOk() && !oldRules.contains(newRule))
+                    {
+                        comNetwork.AddPortForwardRule(true /* IPv6? */, newRule.name, newRule.protocol,
+                                                      newRule.hostIp, newRule.hostPort.value(),
+                                                      newRule.guestIp, newRule.guestPort.value());
+                        oldRules.append(newRule);
+                    }
+            }
+
+            /* Show error message if necessary: */
+            if (!comNetwork.isOk())
+                msgCenter().cannotSaveNATNetworkParameter(comNetwork, this);
+
             /* Update network in the tree: */
             UIDataNATNetwork data;
@@ -1207,4 +1204,7 @@
         }
     }
+
+    /* Make sure button states updated: */
+    m_pDetailsWidgetNATNetwork->updateButtonStates();
 }
 
