forked from eden-emu/eden
		
	inputCommon: Mouse fixes
This commit is contained in:
		
							parent
							
								
									632841f968
								
							
						
					
					
						commit
						a380976857
					
				
					 9 changed files with 89 additions and 25 deletions
				
			
		|  | @ -59,7 +59,7 @@ void Mouse::UpdateYuzuSettings() { | |||
|     }); | ||||
| } | ||||
| 
 | ||||
| void Mouse::PressButton(int x, int y, int button_) { | ||||
| void Mouse::PressButton(int x, int y, MouseButton button_) { | ||||
|     const auto button_index = static_cast<std::size_t>(button_); | ||||
|     if (button_index >= mouse_info.size()) { | ||||
|         return; | ||||
|  | @ -67,7 +67,7 @@ void Mouse::PressButton(int x, int y, int button_) { | |||
| 
 | ||||
|     const auto button = 1U << button_index; | ||||
|     buttons |= static_cast<u16>(button); | ||||
|     last_button = static_cast<MouseButton>(button_index); | ||||
|     last_button = button_; | ||||
| 
 | ||||
|     mouse_info[button_index].mouse_origin = Common::MakeVec(x, y); | ||||
|     mouse_info[button_index].last_mouse_position = Common::MakeVec(x, y); | ||||
|  | @ -129,7 +129,7 @@ void Mouse::MouseMove(int x, int y, int center_x, int center_y) { | |||
|     } | ||||
| } | ||||
| 
 | ||||
| void Mouse::ReleaseButton(int button_) { | ||||
| void Mouse::ReleaseButton(MouseButton button_) { | ||||
|     const auto button_index = static_cast<std::size_t>(button_); | ||||
|     if (button_index >= mouse_info.size()) { | ||||
|         return; | ||||
|  | @ -152,6 +152,11 @@ void Mouse::BeginConfiguration() { | |||
| 
 | ||||
| void Mouse::EndConfiguration() { | ||||
|     buttons = 0; | ||||
|     for (MouseInfo& info : mouse_info) { | ||||
|         info.tilt_speed = 0; | ||||
|         info.data.pressed = false; | ||||
|         info.data.axis = {0, 0}; | ||||
|     } | ||||
|     last_button = MouseButton::Undefined; | ||||
|     mouse_queue.Clear(); | ||||
|     configuring = false; | ||||
|  |  | |||
|  | @ -18,10 +18,12 @@ namespace MouseInput { | |||
| 
 | ||||
| enum class MouseButton { | ||||
|     Left, | ||||
|     Wheel, | ||||
|     Right, | ||||
|     Forward, | ||||
|     Wheel, | ||||
|     Backward, | ||||
|     Forward, | ||||
|     Task, | ||||
|     Extra, | ||||
|     Undefined, | ||||
| }; | ||||
| 
 | ||||
|  | @ -51,7 +53,7 @@ public: | |||
|      * @param y the y-coordinate of the cursor | ||||
|      * @param button_ the button pressed | ||||
|      */ | ||||
|     void PressButton(int x, int y, int button_); | ||||
|     void PressButton(int x, int y, MouseButton button_); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Signals that mouse has moved. | ||||
|  | @ -65,7 +67,7 @@ public: | |||
|     /**
 | ||||
|      * Signals that a motion sensor tilt has ended. | ||||
|      */ | ||||
|     void ReleaseButton(int button_); | ||||
|     void ReleaseButton(MouseButton button_); | ||||
| 
 | ||||
|     [[nodiscard]] Common::SPSCQueue<MouseStatus>& GetMouseQueue(); | ||||
|     [[nodiscard]] const Common::SPSCQueue<MouseStatus>& GetMouseQueue() const; | ||||
|  | @ -94,7 +96,7 @@ private: | |||
|     u16 buttons{}; | ||||
|     std::thread update_thread; | ||||
|     MouseButton last_button{MouseButton::Undefined}; | ||||
|     std::array<MouseInfo, 5> mouse_info; | ||||
|     std::array<MouseInfo, 7> mouse_info; | ||||
|     Common::SPSCQueue<MouseStatus> mouse_queue; | ||||
|     bool configuring{false}; | ||||
|     bool update_thread_running{true}; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 german77
						german77