TextBlock性能优化,避免重复布局

This commit is contained in:
Nanako 2025-04-22 22:38:17 +08:00
parent 9366415c8c
commit 4418c383bc

View File

@ -33,8 +33,10 @@ void mtext_block::arrange_children(const geometry_t& in_allotted_geometry) {
mleaf_widget<text_block_args>::arrange_children(in_allotted_geometry); mleaf_widget<text_block_args>::arrange_children(in_allotted_geometry);
if (warp_text_) { if (warp_text_) {
const auto current_width = in_allotted_geometry.get_local_size().x(); const auto current_width = in_allotted_geometry.get_local_size().x();
layout_ = font_manager::instance().layout_text(text_, font_, font_size_, current_width, line_spacing_); if (current_width != layout_.total_size.x()) {
invalidate(invalidate_reason::layout); layout_ = font_manager::instance().layout_text(text_, font_, font_size_, current_width, line_spacing_);
invalidate(invalidate_reason::layout);
}
} else { } else {
layout_ = font_manager::instance().layout_text(text_, font_, font_size_, 0, line_spacing_); layout_ = font_manager::instance().layout_text(text_, font_, font_size_, 0, line_spacing_);
} }