mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:12:45 +00:00 
			
		
		
		
	LibWeb: Dispatch keydown events before invoking special handlers
We need to give pages the opportunity to intercept keydown events and potentially stop them from propagating. Otherwise, for example, pressing an arrow key in an <input> element is not observable via script.
This commit is contained in:
		
							parent
							
								
									27d40bafc9
								
							
						
					
					
						commit
						d5d6f9bc92
					
				
					 1 changed files with 4 additions and 4 deletions
				
			
		|  | @ -769,6 +769,10 @@ bool EventHandler::handle_keydown(KeyCode key, unsigned modifiers, u32 code_poin | |||
|         media_element.handle_keydown({}, key).release_value_but_fixme_should_propagate_errors(); | ||||
|     } | ||||
| 
 | ||||
|     bool continue_ = fire_keyboard_event(UIEvents::EventNames::keydown, m_browsing_context, key, modifiers, code_point); | ||||
|     if (!continue_) | ||||
|         return false; | ||||
| 
 | ||||
|     if (m_browsing_context->cursor_position() && m_browsing_context->cursor_position()->node()->is_editable()) { | ||||
|         auto& node = verify_cast<DOM::Text>(*m_browsing_context->cursor_position()->node()); | ||||
| 
 | ||||
|  | @ -824,10 +828,6 @@ bool EventHandler::handle_keydown(KeyCode key, unsigned modifiers, u32 code_poin | |||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     bool continue_ = fire_keyboard_event(UIEvents::EventNames::keydown, m_browsing_context, key, modifiers, code_point); | ||||
|     if (!continue_) | ||||
|         return false; | ||||
| 
 | ||||
|     // FIXME: Work out and implement the difference between this and keydown.
 | ||||
|     return fire_keyboard_event(UIEvents::EventNames::keypress, m_browsing_context, key, modifiers, code_point); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy Flynn
						Timothy Flynn