Merge branch 'improve-shape-selection' into 'main'
Improve shape-selection See merge request World/Phosh/squeekboard!639
This commit is contained in:
		
							
								
								
									
										12
									
								
								src/state.rs
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/state.rs
									
									
									
									
									
								
							@ -388,8 +388,10 @@ Outcome:
 | 
				
			|||||||
                // Changes the point at which the layout-shape is changed to the wide shape.
 | 
					                // Changes the point at which the layout-shape is changed to the wide shape.
 | 
				
			||||||
                // Slightly higher aspect-ratio (16:5.1) than the expected aspect-ratio of the wide shape (16:5).
 | 
					                // Slightly higher aspect-ratio (16:5.1) than the expected aspect-ratio of the wide shape (16:5).
 | 
				
			||||||
                // 5.1/16 = 1/3.14 = 172/540 (rounded, height / width)
 | 
					                // 5.1/16 = 1/3.14 = 172/540 (rounded, height / width)
 | 
				
			||||||
 | 
					                // FIXME: This should be 172/540, but it is currently used as a workaround to improve shape-selection.
 | 
				
			||||||
 | 
					                // For more information about that, read https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/639 .
 | 
				
			||||||
                let max_wide_height = Rational {
 | 
					                let max_wide_height = Rational {
 | 
				
			||||||
                    numerator: 172,
 | 
					                    numerator: 188,
 | 
				
			||||||
                    denominator: 540,
 | 
					                    denominator: 540,
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
                let ideal_panel_height = Rational {
 | 
					                let ideal_panel_height = Rational {
 | 
				
			||||||
@ -398,8 +400,6 @@ Outcome:
 | 
				
			|||||||
                };
 | 
					                };
 | 
				
			||||||
                // Reduce height to match what the layout can fill.
 | 
					                // Reduce height to match what the layout can fill.
 | 
				
			||||||
                // For this, we need to guess if normal or wide will be picked.
 | 
					                // For this, we need to guess if normal or wide will be picked.
 | 
				
			||||||
                // Example: When the height of Squeekboard is 172 pixels and the width of the display
 | 
					 | 
				
			||||||
                // is at least 540 pixels, then the wide shape will be chosen.
 | 
					 | 
				
			||||||
                // This must match `eek_gtk_keyboard.c::get_type`.
 | 
					                // This must match `eek_gtk_keyboard.c::get_type`.
 | 
				
			||||||
                // TODO: query layout database and choose one directly
 | 
					                // TODO: query layout database and choose one directly
 | 
				
			||||||
                let (arrangement, height_as_widths) = {
 | 
					                let (arrangement, height_as_widths) = {
 | 
				
			||||||
@ -826,12 +826,12 @@ pub mod test {
 | 
				
			|||||||
    #[test]
 | 
					    #[test]
 | 
				
			||||||
    fn size_fairphone_2() {scaling_test_base(1080, 1920, 62, 111, 3, 630)}
 | 
					    fn size_fairphone_2() {scaling_test_base(1080, 1920, 62, 111, 3, 630)}
 | 
				
			||||||
    #[test]
 | 
					    #[test]
 | 
				
			||||||
    fn size_fairphone_2_horizontal() {scaling_test_base(1920, 1080, 111, 62, 3, 540)}
 | 
					    fn size_fairphone_2_horizontal() {scaling_test_wide(1920, 1080, 111, 62, 3, 540)}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #[test]
 | 
					    #[test]
 | 
				
			||||||
    fn size_xperia_xa2() {scaling_test_base(1080, 1920, 65, 115, 3, 630)}
 | 
					    fn size_xperia_xa2() {scaling_test_base(1080, 1920, 65, 115, 3, 630)}
 | 
				
			||||||
    #[test]
 | 
					    #[test]
 | 
				
			||||||
    fn size_xperia_xa2_horizontal() {scaling_test_base(1920, 1080, 115, 65, 3, 540)}
 | 
					    fn size_xperia_xa2_horizontal() {scaling_test_wide(1920, 1080, 115, 65, 3, 540)}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #[test]
 | 
					    #[test]
 | 
				
			||||||
    fn size_galaxy_e7() {scaling_test_base(720, 1280, 69, 122, 2, 396)}
 | 
					    fn size_galaxy_e7() {scaling_test_base(720, 1280, 69, 122, 2, 396)}
 | 
				
			||||||
@ -925,7 +925,7 @@ pub mod test {
 | 
				
			|||||||
    fn size_steam_deck_oled_horizontal() {scaling_test_wide(1280, 800, 159, 100, 1, 306)}
 | 
					    fn size_steam_deck_oled_horizontal() {scaling_test_wide(1280, 800, 159, 100, 1, 306)}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #[test]
 | 
					    #[test]
 | 
				
			||||||
    fn size_legion_go() {scaling_test_base(1600, 2560, 119, 190, 1, 510)}
 | 
					    fn size_legion_go() {scaling_test_wide(1600, 2560, 119, 190, 1, 510)}
 | 
				
			||||||
    #[test]
 | 
					    #[test]
 | 
				
			||||||
    fn size_legion_go_horizontal() {scaling_test_wide(2560, 1600, 190, 119, 1, 511)}
 | 
					    fn size_legion_go_horizontal() {scaling_test_wide(2560, 1600, 190, 119, 1, 511)}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user