mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	frontend: Fix clicking primary screen window touching screen. (#6707)
This commit is contained in:
		
							parent
							
								
									71582a72a4
								
							
						
					
					
						commit
						a9e390b1b1
					
				
					 2 changed files with 22 additions and 9 deletions
				
			
		|  | @ -55,15 +55,17 @@ EmuWindow::EmuWindow(bool is_secondary_) : is_secondary{is_secondary_} { | |||
| } | ||||
| 
 | ||||
| EmuWindow::~EmuWindow() = default; | ||||
| /**
 | ||||
|  * Check if the given x/y coordinates are within the touchpad specified by the framebuffer layout | ||||
|  * @param layout FramebufferLayout object describing the framebuffer size and screen positions | ||||
|  * @param framebuffer_x Framebuffer x-coordinate to check | ||||
|  * @param framebuffer_y Framebuffer y-coordinate to check | ||||
|  * @return True if the coordinates are within the touchpad, otherwise false | ||||
|  */ | ||||
| static bool IsWithinTouchscreen(const Layout::FramebufferLayout& layout, unsigned framebuffer_x, | ||||
|                                 unsigned framebuffer_y) { | ||||
| 
 | ||||
| bool EmuWindow::IsWithinTouchscreen(const Layout::FramebufferLayout& layout, unsigned framebuffer_x, | ||||
|                                     unsigned framebuffer_y) { | ||||
| #ifndef ANDROID | ||||
|     // If separate windows and the touch is in the primary (top) screen, ignore it.
 | ||||
|     if (Settings::values.layout_option.GetValue() == Settings::LayoutOption::SeparateWindows && | ||||
|         !is_secondary && !Settings::values.swap_screen.GetValue()) { | ||||
|         return false; | ||||
|     } | ||||
| #endif | ||||
| 
 | ||||
|     if (Settings::values.render_3d.GetValue() == Settings::StereoRenderOption::SideBySide) { | ||||
|         return (framebuffer_y >= layout.bottom_screen.top && | ||||
|                 framebuffer_y < layout.bottom_screen.bottom && | ||||
|  |  | |||
|  | @ -288,6 +288,17 @@ private: | |||
| 
 | ||||
|     void CreateTouchState(); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Check if the given x/y coordinates are within the touchpad specified by the framebuffer | ||||
|      * layout | ||||
|      * @param layout FramebufferLayout object describing the framebuffer size and screen positions | ||||
|      * @param framebuffer_x Framebuffer x-coordinate to check | ||||
|      * @param framebuffer_y Framebuffer y-coordinate to check | ||||
|      * @return True if the coordinates are within the touchpad, otherwise false | ||||
|      */ | ||||
|     bool IsWithinTouchscreen(const Layout::FramebufferLayout& layout, unsigned framebuffer_x, | ||||
|                              unsigned framebuffer_y); | ||||
| 
 | ||||
|     Layout::FramebufferLayout framebuffer_layout; ///< Current framebuffer layout
 | ||||
| 
 | ||||
|     WindowConfig config{};        ///< Internal configuration (changes pending for being applied in
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue