mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 09:02:43 +00:00 
			
		
		
		
	GUI: Extract a ScrollBar::scroll_to_position method
This commit is contained in:
		
							parent
							
								
									d1571ce00a
								
							
						
					
					
						commit
						eab7712ab0
					
				
					 2 changed files with 21 additions and 13 deletions
				
			
		|  | @ -294,19 +294,7 @@ void ScrollBar::mousedown_event(MouseEvent& event) | |||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     float range_size = m_max - m_min; | ||||
|     float available = scrubbable_range_in_pixels(); | ||||
| 
 | ||||
|     float x = ::max(0, event.position().x() - button_width() - button_width() / 2); | ||||
|     float y = ::max(0, event.position().y() - button_height() - button_height() / 2); | ||||
| 
 | ||||
|     float rel_x = x / available; | ||||
|     float rel_y = y / available; | ||||
| 
 | ||||
|     if (orientation() == Orientation::Vertical) | ||||
|         set_value(m_min + rel_y * range_size); | ||||
|     else | ||||
|         set_value(m_min + rel_x * range_size); | ||||
|     scroll_to_position(event.position()); | ||||
| 
 | ||||
|     m_scrubbing = true; | ||||
|     m_scrub_start_value = value(); | ||||
|  | @ -342,6 +330,24 @@ void ScrollBar::set_automatic_scrolling_active(bool active) | |||
|     } | ||||
| } | ||||
| 
 | ||||
| void ScrollBar::scroll_to_position(const Gfx::IntPoint& position) | ||||
| { | ||||
|     float range_size = m_max - m_min; | ||||
|     float available = scrubbable_range_in_pixels(); | ||||
| 
 | ||||
|     float x = ::max(0, position.x() - button_width() - button_width() / 2); | ||||
|     float y = ::max(0, position.y() - button_height() - button_height() / 2); | ||||
| 
 | ||||
|     float rel_x = x / available; | ||||
|     float rel_y = y / available; | ||||
| 
 | ||||
|     if (orientation() == Orientation::Vertical) | ||||
|         set_value(m_min + rel_y * range_size); | ||||
|     else | ||||
|         set_value(m_min + rel_x * range_size); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| void ScrollBar::mousemove_event(MouseEvent& event) | ||||
| { | ||||
|     auto old_hovered_component = m_hovered_component; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Nico Weber
						Nico Weber