mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	citra_qt: configure_input.cpp: update the modifier settings for both the sticks (#6033)
The Controller config UI exposes the Circle mod, only for the Circle pad's modifier, So after changing the binding, it leaves the default binding for the c-stick untouched, and the user is nagged about the (default) D key being bound to something, when trying to bind it to any other button. With this PR we update the modifier for both the Circle Pad and C-stick.
This commit is contained in:
		
							parent
							
								
									3f16cd9c82
								
							
						
					
					
						commit
						88a4759702
					
				
					 1 changed files with 57 additions and 3 deletions
				
			
		|  | @ -27,6 +27,14 @@ const std::array<std::string, ConfigureInput::ANALOG_SUB_BUTTONS_NUM> | ||||||
|         "modifier", |         "modifier", | ||||||
|     }}; |     }}; | ||||||
| 
 | 
 | ||||||
|  | enum class AnalogSubButtons { | ||||||
|  |     up, | ||||||
|  |     down, | ||||||
|  |     left, | ||||||
|  |     right, | ||||||
|  |     modifier, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| static QString GetKeyName(int key_code) { | static QString GetKeyName(int key_code) { | ||||||
|     switch (key_code) { |     switch (key_code) { | ||||||
|     case Qt::Key_Shift: |     case Qt::Key_Shift: | ||||||
|  | @ -163,7 +171,7 @@ ConfigureInput::ConfigureInput(QWidget* parent) | ||||||
|             ui->buttonCircleDown, |             ui->buttonCircleDown, | ||||||
|             ui->buttonCircleLeft, |             ui->buttonCircleLeft, | ||||||
|             ui->buttonCircleRight, |             ui->buttonCircleRight, | ||||||
|             ui->buttonCircleMod, |             nullptr, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             ui->buttonCStickUp, |             ui->buttonCStickUp, | ||||||
|  | @ -289,6 +297,50 @@ ConfigureInput::ConfigureInput(QWidget* parent) | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     // The Circle Mod button is common for both the sticks, so update the modifier settings
 | ||||||
|  |     // for both the sticks.
 | ||||||
|  |     connect(ui->buttonCircleMod, &QPushButton::clicked, [=]() { | ||||||
|  |         HandleClick( | ||||||
|  |             ui->buttonCircleMod, | ||||||
|  |             [=](const Common::ParamPackage& params) { | ||||||
|  |                 for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; | ||||||
|  |                      analog_id++) { | ||||||
|  |                     SetAnalogButton(params, analogs_param[analog_id], "modifier"); | ||||||
|  |                 } | ||||||
|  |                 ApplyConfiguration(); | ||||||
|  |                 Settings::SaveProfile(ui->profile->currentIndex()); | ||||||
|  |             }, | ||||||
|  |             InputCommon::Polling::DeviceType::Button); | ||||||
|  |     }); | ||||||
|  |     connect(ui->buttonCircleMod, &QPushButton::customContextMenuRequested, | ||||||
|  |             [&](const QPoint& menu_location) { | ||||||
|  |                 QMenu context_menu; | ||||||
|  |                 context_menu.addAction(tr("Clear"), [&] { | ||||||
|  |                     for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; | ||||||
|  |                          analog_id++) { | ||||||
|  |                         analogs_param[analog_id].Erase("modifier"); | ||||||
|  |                     } | ||||||
|  |                     ui->buttonCircleMod->setText(tr("[not set]")); | ||||||
|  |                     ApplyConfiguration(); | ||||||
|  |                     Settings::SaveProfile(ui->profile->currentIndex()); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |                 context_menu.addAction(tr("Restore Default"), [&] { | ||||||
|  |                     for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; | ||||||
|  |                          analog_id++) { | ||||||
|  |                         Common::ParamPackage params{InputCommon::GenerateKeyboardParam( | ||||||
|  |                             Config::default_analogs[analog_id] | ||||||
|  |                                                    [static_cast<u32>(AnalogSubButtons::modifier)])}; | ||||||
|  |                         SetAnalogButton(params, analogs_param[analog_id], "modifier"); | ||||||
|  |                         ui->buttonCircleMod->setText( | ||||||
|  |                             AnalogToText(analogs_param[analog_id], "modifier")); | ||||||
|  |                     } | ||||||
|  |                     ApplyConfiguration(); | ||||||
|  |                     Settings::SaveProfile(ui->profile->currentIndex()); | ||||||
|  |                 }); | ||||||
|  |                 context_menu.exec(ui->buttonCircleMod->mapToGlobal(menu_location)); | ||||||
|  |             }); | ||||||
|  | 
 | ||||||
|     connect(ui->buttonMotionTouch, &QPushButton::clicked, [this] { |     connect(ui->buttonMotionTouch, &QPushButton::clicked, [this] { | ||||||
|         QDialog* motion_touch_dialog = new ConfigureMotionTouch(this); |         QDialog* motion_touch_dialog = new ConfigureMotionTouch(this); | ||||||
|         return motion_touch_dialog->exec(); |         return motion_touch_dialog->exec(); | ||||||
|  | @ -363,14 +415,14 @@ QList<QKeySequence> ConfigureInput::GetUsedKeyboardKeys() { | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         auto button_param = buttons_param[button]; |         const auto& button_param = buttons_param[button]; | ||||||
|         if (button_param.Get("engine", "") == "keyboard") { |         if (button_param.Get("engine", "") == "keyboard") { | ||||||
|             list << QKeySequence(button_param.Get("code", 0)); |             list << QKeySequence(button_param.Get("code", 0)); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; ++analog_id) { |     for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; ++analog_id) { | ||||||
|         auto analog_param = analogs_param[analog_id]; |         const auto& analog_param = analogs_param[analog_id]; | ||||||
|         if (analog_param.Get("engine", "") == "analog_from_button") { |         if (analog_param.Get("engine", "") == "analog_from_button") { | ||||||
|             for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; ++sub_button_id) { |             for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; ++sub_button_id) { | ||||||
|                 const Common::ParamPackage sub_button{ |                 const Common::ParamPackage sub_button{ | ||||||
|  | @ -467,6 +519,8 @@ void ConfigureInput::UpdateButtonLabels() { | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     ui->buttonCircleMod->setText(AnalogToText(analogs_param[0], "modifier")); | ||||||
|  | 
 | ||||||
|     EmitInputKeysChanged(); |     EmitInputKeysChanged(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue