Support 3 drag vs. select options, and unifiy with other drag prefs.

Fixes https://gitlab.com/kicad/code/kicad/issues/5493
This commit is contained in:
Jeff Young
2021-01-11 11:50:14 +00:00
parent 7134ff2da6
commit 6c648df4c6
17 changed files with 435 additions and 199 deletions
+23 -13
View File
@@ -81,23 +81,28 @@ bool PANEL_MOUSE_SETTINGS::TransferDataFromWindow()
if( !isScrollModSetValid( m_currentScrollMod ) )
return false;
int drag_middle = static_cast<int>( MOUSE_DRAG_ACTION::NONE );
int drag_right = static_cast<int>( MOUSE_DRAG_ACTION::NONE );
switch( m_choiceLeftButtonDrag->GetSelection() )
{
case 0: cfg->m_Input.drag_left = static_cast<int>( MOUSE_DRAG_ACTION::SELECT ); break;
case 1: cfg->m_Input.drag_left = static_cast<int>( MOUSE_DRAG_ACTION::DRAG_SELECTED ); break;
case 2: cfg->m_Input.drag_left = static_cast<int>( MOUSE_DRAG_ACTION::DRAG_ANY ); break;
default: break;
}
switch( m_choiceMiddleButtonDrag->GetSelection() )
{
case 0: drag_middle = static_cast<int>( MOUSE_DRAG_ACTION::PAN ); break;
case 1: drag_middle = static_cast<int>( MOUSE_DRAG_ACTION::ZOOM ); break;
case 2: break;
default: break;
case 0: cfg->m_Input.drag_middle = static_cast<int>( MOUSE_DRAG_ACTION::PAN ); break;
case 1: cfg->m_Input.drag_middle = static_cast<int>( MOUSE_DRAG_ACTION::ZOOM ); break;
case 2: cfg->m_Input.drag_middle = static_cast<int>( MOUSE_DRAG_ACTION::NONE ); break;
default: break;
}
switch( m_choiceRightButtonDrag->GetSelection() )
{
case 0: drag_right = static_cast<int>( MOUSE_DRAG_ACTION::PAN ); break;
case 1: drag_right = static_cast<int>( MOUSE_DRAG_ACTION::ZOOM ); break;
case 2: break;
default: break;
case 0: cfg->m_Input.drag_right = static_cast<int>( MOUSE_DRAG_ACTION::PAN ); break;
case 1: cfg->m_Input.drag_right = static_cast<int>( MOUSE_DRAG_ACTION::ZOOM ); break;
case 2: cfg->m_Input.drag_right = static_cast<int>( MOUSE_DRAG_ACTION::NONE ); break;
default: break;
}
cfg->m_Input.center_on_zoom = m_checkZoomCenter->GetValue();
@@ -112,9 +117,6 @@ bool PANEL_MOUSE_SETTINGS::TransferDataFromWindow()
cfg->m_Input.scroll_modifier_pan_h = m_currentScrollMod.panh;
cfg->m_Input.scroll_modifier_pan_v = m_currentScrollMod.panv;
cfg->m_Input.drag_middle = drag_middle;
cfg->m_Input.drag_right = drag_right;
return true;
}
@@ -141,6 +143,14 @@ void PANEL_MOUSE_SETTINGS::applySettingsToPanel( const COMMON_SETTINGS& aSetting
m_zoomSpeed->Enable( !aSettings.m_Input.zoom_speed_auto );
switch( static_cast<MOUSE_DRAG_ACTION>( aSettings.m_Input.drag_left ) )
{
case MOUSE_DRAG_ACTION::SELECT: m_choiceLeftButtonDrag->SetSelection( 0 ); break;
case MOUSE_DRAG_ACTION::DRAG_SELECTED: m_choiceLeftButtonDrag->SetSelection( 1 ); break;
case MOUSE_DRAG_ACTION::DRAG_ANY: m_choiceLeftButtonDrag->SetSelection( 2 ); break;
default: break;
}
auto set_mouse_buttons =
[]( const MOUSE_DRAG_ACTION& aVal, wxChoice* aChoice )
{