mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 18:32:45 +00:00 
			
		
		
		
	LibWeb: Invalidate layout-transformed text on DOM text node change
This fixes an issue where programmatically changing the value of an input element wasn't reflected visually.
This commit is contained in:
		
							parent
							
								
									e2740bd19d
								
							
						
					
					
						commit
						1c47695bae
					
				
					 5 changed files with 44 additions and 0 deletions
				
			
		|  | @ -10,6 +10,7 @@ | |||
| #include <LibWeb/DOM/MutationType.h> | ||||
| #include <LibWeb/DOM/Range.h> | ||||
| #include <LibWeb/DOM/StaticNodeList.h> | ||||
| #include <LibWeb/Layout/TextNode.h> | ||||
| 
 | ||||
| namespace Web::DOM { | ||||
| 
 | ||||
|  | @ -108,6 +109,12 @@ WebIDL::ExceptionOr<void> CharacterData::replace_data(size_t offset, size_t coun | |||
|     if (parent()) | ||||
|         parent()->children_changed(); | ||||
| 
 | ||||
|     // NOTE: Since the text node's data has changed, we need to invalidate the text for rendering.
 | ||||
|     //       This ensures that the new text is reflected in layout, even if we don't end up
 | ||||
|     //       doing a full layout tree rebuild.
 | ||||
|     if (auto* layout_node = this->layout_node(); layout_node && layout_node->is_text_node()) | ||||
|         static_cast<Layout::TextNode&>(*layout_node).invalidate_text_for_rendering(); | ||||
| 
 | ||||
|     set_needs_style_update(true); | ||||
|     document().set_needs_layout(); | ||||
|     return {}; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling