mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	GLFW: Implemented EmuWindow touchpad support.
This commit is contained in:
		
							parent
							
								
									543232436f
								
							
						
					
					
						commit
						dd73217ae3
					
				
					 2 changed files with 26 additions and 0 deletions
				
			
		|  | @ -16,6 +16,26 @@ EmuWindow_GLFW* EmuWindow_GLFW::GetEmuWindow(GLFWwindow* win) { | |||
|     return static_cast<EmuWindow_GLFW*>(glfwGetWindowUserPointer(win)); | ||||
| } | ||||
| 
 | ||||
| void EmuWindow_GLFW::OnMouseButtonEvent(GLFWwindow* window, int button, int action, int mods) { | ||||
|     if (button == GLFW_MOUSE_BUTTON_LEFT) { | ||||
|         auto layout = GetEmuWindow(window)->GetFramebufferLayout(); | ||||
|         double x, y; | ||||
|         glfwGetCursorPos(window, &x, &y); | ||||
| 
 | ||||
|         if (action == GLFW_PRESS) { | ||||
|             EmuWindow::TouchPressed(layout, static_cast<u16>(x), static_cast<u16>(y)); | ||||
|         } else if (action == GLFW_RELEASE) { | ||||
|             EmuWindow::TouchReleased(layout, static_cast<u16>(x), static_cast<u16>(y)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void EmuWindow_GLFW::OnCursorPosEvent(GLFWwindow* window, double x, double y) { | ||||
| 
 | ||||
|     auto layout = GetEmuWindow(window)->GetFramebufferLayout(); | ||||
|     EmuWindow::TouchMoved(layout, static_cast<u16>(x), static_cast<u16>(y)); | ||||
| } | ||||
| 
 | ||||
| /// Called by GLFW when a key event occurs
 | ||||
| void EmuWindow_GLFW::OnKeyEvent(GLFWwindow* win, int key, int scancode, int action, int mods) { | ||||
| 
 | ||||
|  | @ -88,6 +108,8 @@ EmuWindow_GLFW::EmuWindow_GLFW() { | |||
| 
 | ||||
|     // Setup callbacks
 | ||||
|     glfwSetKeyCallback(m_render_window, OnKeyEvent); | ||||
|     glfwSetMouseButtonCallback(m_render_window, OnMouseButtonEvent); | ||||
|     glfwSetCursorPosCallback(m_render_window, OnCursorPosEvent); | ||||
|     glfwSetFramebufferSizeCallback(m_render_window, OnFramebufferResizeEvent); | ||||
|     glfwSetWindowSizeCallback(m_render_window, OnClientAreaResizeEvent); | ||||
| 
 | ||||
|  |  | |||
|  | @ -27,6 +27,10 @@ public: | |||
| 
 | ||||
|     static void OnKeyEvent(GLFWwindow* win, int key, int scancode, int action, int mods); | ||||
| 
 | ||||
|     static void OnMouseButtonEvent(GLFWwindow* window, int button, int action, int mods); | ||||
| 
 | ||||
|     static void OnCursorPosEvent(GLFWwindow* window, double x, double y); | ||||
| 
 | ||||
|     /// Whether the window is still open, and a close request hasn't yet been sent
 | ||||
|     const bool IsOpen(); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue