mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:12:45 +00:00 
			
		
		
		
	LibWeb: Create "empty" line box fragments for inline elements
In order for inline elements (e.g <span>) to contribute padding etc. to line boxes, we now create special "leading" and "trailing" fragments for Layout::InlineNode and size them according to the horizontal padding values. The height of these fragments is taken from the tallest fragment on the line. (Perhaps we should stop having per-fragment heights and just keep a single height per line box, but that's a separate issue.) In order to make things look nice, we now also adjust the height of all fragments on a line so that nobody is shorter than the CSS line-height.
This commit is contained in:
		
							parent
							
								
									311e1039b5
								
							
						
					
					
						commit
						d59ec3ab85
					
				
					 7 changed files with 56 additions and 4 deletions
				
			
		|  | @ -33,7 +33,7 @@ | |||
| 
 | ||||
| namespace Web::Layout { | ||||
| 
 | ||||
| void LineBox::add_fragment(const Node& layout_node, int start, int length, int width, int height) | ||||
| void LineBox::add_fragment(const Node& layout_node, int start, int length, int width, int height, LineBoxFragment::Type fragment_type) | ||||
| { | ||||
|     bool text_align_is_justify = layout_node.style().text_align() == CSS::TextAlign::Justify; | ||||
|     if (!text_align_is_justify && !m_fragments.is_empty() && &m_fragments.last().layout_node() == &layout_node) { | ||||
|  | @ -42,7 +42,7 @@ void LineBox::add_fragment(const Node& layout_node, int start, int length, int w | |||
|         m_fragments.last().m_length = (start - m_fragments.last().m_start) + length; | ||||
|         m_fragments.last().set_width(m_fragments.last().width() + width); | ||||
|     } else { | ||||
|         m_fragments.append(make<LineBoxFragment>(layout_node, start, length, Gfx::FloatPoint(m_width, 0.0f), Gfx::FloatSize(width, height))); | ||||
|         m_fragments.append(make<LineBoxFragment>(layout_node, start, length, Gfx::FloatPoint(m_width, 0.0f), Gfx::FloatSize(width, height), fragment_type)); | ||||
|     } | ||||
|     m_width += width; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling