From ebb74fcc2b1bf7045d576a2b667ff1e0f7d15d2f Mon Sep 17 00:00:00 2001
From: Jeff Young <jeff@rokeby.ie>
Date: Tue, 18 Sep 2018 20:37:00 +0100
Subject: [PATCH] Honour diff-pair dimension changes while routing.

---
 include/board_design_settings.h      | 42 ++++++++++++++++++++++++++++
 pcbnew/router/pns_sizes_settings.cpp |  4 +++
 2 files changed, 46 insertions(+)

diff --git a/include/board_design_settings.h b/include/board_design_settings.h
index ce3946c9a4..58cc0d0413 100644
--- a/include/board_design_settings.h
+++ b/include/board_design_settings.h
@@ -582,6 +582,48 @@ public:
         return m_useCustomDiffPair;
     }
 
+    /**
+     * Function GetCurrentDiffPairWidth
+     * @return the current diff pair track width, according to the selected options
+     * ( using the default netclass value or a preset/custom value )
+     * the default netclass is always in m_DiffPairDimensionsList[0]
+     */
+    inline int GetCurrentDiffPairWidth() const
+    {
+        if( m_useCustomDiffPair )
+            return m_customDiffPair.m_Width;
+        else
+            return m_DiffPairDimensionsList[m_diffPairIndex].m_Width;
+    }
+
+    /**
+     * Function GetCurrentDiffPairGap
+     * @return the current diff pair gap, according to the selected options
+     * ( using the default netclass value or a preset/custom value )
+     * the default netclass is always in m_DiffPairDimensionsList[0]
+     */
+    inline int GetCurrentDiffPairGap() const
+    {
+        if( m_useCustomDiffPair )
+            return m_customDiffPair.m_Gap;
+        else
+            return m_DiffPairDimensionsList[m_diffPairIndex].m_Gap;
+    }
+
+    /**
+     * Function GetCurrentDiffPairViaGap
+     * @return the current diff pair via gap, according to the selected options
+     * ( using the default netclass value or a preset/custom value )
+     * the default netclass is always in m_DiffPairDimensionsList[0]
+     */
+    inline int GetCurrentDiffPairViaGap() const
+    {
+        if( m_useCustomDiffPair )
+            return m_customDiffPair.m_ViaGap;
+        else
+            return m_DiffPairDimensionsList[m_diffPairIndex].m_ViaGap;
+    }
+
     /**
      * Function SetMinHoleSeparation
      * @param aValue The minimum distance between the edges of two holes or 0 to disable
diff --git a/pcbnew/router/pns_sizes_settings.cpp b/pcbnew/router/pns_sizes_settings.cpp
index 18ead5f729..3e06c9c987 100644
--- a/pcbnew/router/pns_sizes_settings.cpp
+++ b/pcbnew/router/pns_sizes_settings.cpp
@@ -168,6 +168,10 @@ void SIZES_SETTINGS::ImportCurrent( BOARD_DESIGN_SETTINGS& aSettings )
     m_trackWidth = aSettings.GetCurrentTrackWidth();
     m_viaDiameter = aSettings.GetCurrentViaSize();
     m_viaDrill = aSettings.GetCurrentViaDrill();
+
+    m_diffPairWidth = aSettings.GetCurrentDiffPairWidth();
+    m_diffPairGap = aSettings.GetCurrentDiffPairGap();
+    m_diffPairViaGap = aSettings.GetCurrentDiffPairViaGap();
 }