mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Merge pull request #2630 from wwylele/qt-focus-loss-2
Qt: Release all pressed buttons when window focus is lost [rebased]
This commit is contained in:
		
						commit
						a48e5c64b6
					
				
					 5 changed files with 18 additions and 3 deletions
				
			
		|  | @ -235,7 +235,10 @@ void GRenderWindow::mouseReleaseEvent(QMouseEvent* event) { | |||
|         motion_emu->EndTilt(); | ||||
| } | ||||
| 
 | ||||
| void GRenderWindow::ReloadSetKeymaps() {} | ||||
| void GRenderWindow::focusOutEvent(QFocusEvent* event) { | ||||
|     QWidget::focusOutEvent(event); | ||||
|     InputCommon::GetKeyboard()->ReleaseAllKeys(); | ||||
| } | ||||
| 
 | ||||
| void GRenderWindow::OnClientAreaResized(unsigned width, unsigned height) { | ||||
|     NotifyClientAreaSizeChanged(std::make_pair(width, height)); | ||||
|  |  | |||
|  | @ -128,7 +128,7 @@ public: | |||
|     void mouseMoveEvent(QMouseEvent* event) override; | ||||
|     void mouseReleaseEvent(QMouseEvent* event) override; | ||||
| 
 | ||||
|     void ReloadSetKeymaps(); | ||||
|     void focusOutEvent(QFocusEvent* event) override; | ||||
| 
 | ||||
|     void OnClientAreaResized(unsigned width, unsigned height); | ||||
| 
 | ||||
|  |  | |||
|  | @ -612,7 +612,6 @@ void GMainWindow::OnConfigure() { | |||
|     auto result = configureDialog.exec(); | ||||
|     if (result == QDialog::Accepted) { | ||||
|         configureDialog.applyConfiguration(); | ||||
|         render_window->ReloadSetKeymaps(); | ||||
|         config->Save(); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -53,6 +53,13 @@ public: | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     void ChangeAllKeyStatus(bool pressed) { | ||||
|         std::lock_guard<std::mutex> guard(mutex); | ||||
|         for (const KeyButtonPair& pair : list) { | ||||
|             pair.key_button->status.store(pressed); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| private: | ||||
|     std::mutex mutex; | ||||
|     std::list<KeyButtonPair> list; | ||||
|  | @ -79,4 +86,8 @@ void Keyboard::ReleaseKey(int key_code) { | |||
|     key_button_list->ChangeKeyStatus(key_code, false); | ||||
| } | ||||
| 
 | ||||
| void Keyboard::ReleaseAllKeys() { | ||||
|     key_button_list->ChangeAllKeyStatus(false); | ||||
| } | ||||
| 
 | ||||
| } // namespace InputCommon
 | ||||
|  |  | |||
|  | @ -38,6 +38,8 @@ public: | |||
|      */ | ||||
|     void ReleaseKey(int key_code); | ||||
| 
 | ||||
|     void ReleaseAllKeys(); | ||||
| 
 | ||||
| private: | ||||
|     std::shared_ptr<KeyButtonList> key_button_list; | ||||
| }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue