diff --git a/common/dialogs/panel_mouse_settings.cpp b/common/dialogs/panel_mouse_settings.cpp
index 4df19092ce..af012e161b 100644
--- a/common/dialogs/panel_mouse_settings.cpp
+++ b/common/dialogs/panel_mouse_settings.cpp
@@ -111,6 +111,14 @@ bool PANEL_MOUSE_SETTINGS::TransferDataFromWindow()
default: break;
}
+ switch( m_choicePanMoveKey->GetSelection() )
+ {
+ case 1: cfg->m_Input.motion_pan_modifier = WXK_ALT; break;
+ case 2: cfg->m_Input.motion_pan_modifier = WXK_CONTROL; break;
+ case 3: cfg->m_Input.motion_pan_modifier = WXK_SHIFT; break;
+ default: cfg->m_Input.motion_pan_modifier = 0; break;
+ }
+
cfg->m_Input.center_on_zoom = m_checkZoomCenter->GetValue();
cfg->m_Input.auto_pan = m_checkAutoPan->GetValue();
cfg->m_Input.auto_pan_acceleration = m_autoPanSpeed->GetValue();
@@ -178,6 +186,14 @@ void PANEL_MOUSE_SETTINGS::applySettingsToPanel( const COMMON_SETTINGS& aSetting
default: break;
}
+ switch( aSettings.m_Input.motion_pan_modifier )
+ {
+ case WXK_ALT: m_choicePanMoveKey->SetSelection( 1 ); break;
+ case WXK_CONTROL: m_choicePanMoveKey->SetSelection( 2 ); break;
+ case WXK_SHIFT: m_choicePanMoveKey->SetSelection( 3 ); break;
+ default: m_choicePanMoveKey->SetSelection( 0 ); break;
+ }
+
m_currentScrollMod.zoom = aSettings.m_Input.scroll_modifier_zoom;
m_currentScrollMod.panh = aSettings.m_Input.scroll_modifier_pan_h;
m_currentScrollMod.panv = aSettings.m_Input.scroll_modifier_pan_v;
diff --git a/common/dialogs/panel_mouse_settings_base.cpp b/common/dialogs/panel_mouse_settings_base.cpp
index c281eb372b..20ffcda0e7 100644
--- a/common/dialogs/panel_mouse_settings_base.cpp
+++ b/common/dialogs/panel_mouse_settings_base.cpp
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
+// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6a-dirty)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -156,6 +156,19 @@ PANEL_MOUSE_SETTINGS_BASE::PANEL_MOUSE_SETTINGS_BASE( wxWindow* parent, wxWindow
fgSizer1->Add( m_choiceRightButtonDrag, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
+ fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 );
+
+ m_panMoveKeyLabel = new wxStaticText( this, wxID_ANY, _("Pan on mouse movement with key:"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_panMoveKeyLabel->Wrap( -1 );
+ fgSizer1->Add( m_panMoveKeyLabel, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
+
+ wxString m_choicePanMoveKeyChoices[] = { _("None"), _("Alt"), _("Ctrl"), _("Shift") };
+ int m_choicePanMoveKeyNChoices = sizeof( m_choicePanMoveKeyChoices ) / sizeof( wxString );
+ m_choicePanMoveKey = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choicePanMoveKeyNChoices, m_choicePanMoveKeyChoices, 0 );
+ m_choicePanMoveKey->SetSelection( 0 );
+ fgSizer1->Add( m_choicePanMoveKey, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
+
+
fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 );
diff --git a/common/dialogs/panel_mouse_settings_base.fbp b/common/dialogs/panel_mouse_settings_base.fbp
index e16235dc3a..477bafecca 100644
--- a/common/dialogs/panel_mouse_settings_base.fbp
+++ b/common/dialogs/panel_mouse_settings_base.fbp
@@ -934,11 +934,11 @@
0
-
diff --git a/common/dialogs/panel_mouse_settings_base.h b/common/dialogs/panel_mouse_settings_base.h
index c438c94df0..7f4a0fc5f7 100644
--- a/common/dialogs/panel_mouse_settings_base.h
+++ b/common/dialogs/panel_mouse_settings_base.h
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
+// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6a-dirty)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -61,6 +61,8 @@ class PANEL_MOUSE_SETTINGS_BASE : public RESETTABLE_PANEL
wxChoice* m_choiceMiddleButtonDrag;
wxStaticText* m_staticText31;
wxChoice* m_choiceRightButtonDrag;
+ wxStaticText* m_panMoveKeyLabel;
+ wxChoice* m_choicePanMoveKey;
wxStaticText* m_scrollLabel;
wxStaticLine* m_staticline2;
wxStaticText* m_staticText21;
diff --git a/common/draw_panel_gal.cpp b/common/draw_panel_gal.cpp
index 0ac9a79db9..924fd81f60 100644
--- a/common/draw_panel_gal.cpp
+++ b/common/draw_panel_gal.cpp
@@ -716,6 +716,7 @@ KIGFX::VC_SETTINGS EDA_DRAW_PANEL_GAL::GetVcSettings()
vcSettings.m_scrollModifierZoom = cfg->m_Input.scroll_modifier_zoom;
vcSettings.m_scrollModifierPanH = cfg->m_Input.scroll_modifier_pan_h;
vcSettings.m_scrollModifierPanV = cfg->m_Input.scroll_modifier_pan_v;
+ vcSettings.m_motionPanModifier = cfg->m_Input.motion_pan_modifier;
vcSettings.m_dragLeft = cfg->m_Input.drag_left;
vcSettings.m_dragMiddle = cfg->m_Input.drag_middle;
vcSettings.m_dragRight = cfg->m_Input.drag_right;
diff --git a/common/settings/common_settings.cpp b/common/settings/common_settings.cpp
index 75b339f809..c86498e039 100644
--- a/common/settings/common_settings.cpp
+++ b/common/settings/common_settings.cpp
@@ -269,6 +269,9 @@ COMMON_SETTINGS::COMMON_SETTINGS() :
m_params.emplace_back( new PARAM( "input.scroll_modifier_pan_v",
&m_Input.scroll_modifier_pan_v, WXK_SHIFT ) );
+ m_params.emplace_back( new PARAM( "input.motion_pan_modifier",
+ &m_Input.motion_pan_modifier, 0 ) );
+
m_params.emplace_back( new PARAM( "input.reverse_scroll_zoom",
&m_Input.reverse_scroll_zoom, false ) );
diff --git a/common/view/view_controls.cpp b/common/view/view_controls.cpp
index 5681614f0c..d7f133c191 100644
--- a/common/view/view_controls.cpp
+++ b/common/view/view_controls.cpp
@@ -76,6 +76,7 @@ void VC_SETTINGS::Reset()
m_scrollModifierZoom = 0;
m_scrollModifierPanH = WXK_CONTROL;
m_scrollModifierPanV = WXK_SHIFT;
+ m_motionPanModifier = 0;
m_dragLeft = MOUSE_DRAG_ACTION::NONE;
m_dragMiddle = MOUSE_DRAG_ACTION::PAN;
m_dragRight = MOUSE_DRAG_ACTION::PAN;
diff --git a/common/view/wx_view_controls.cpp b/common/view/wx_view_controls.cpp
index dc32008c85..705b01bbbd 100644
--- a/common/view/wx_view_controls.cpp
+++ b/common/view/wx_view_controls.cpp
@@ -35,7 +35,7 @@
#include
#include
#include
-#include