Blob Blame History Raw
From 3b2d905ae8592dd9248256bc581bc8f737efdcfa Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Thu, 11 Aug 2022 22:50:01 +0200
Subject: [PATCH 2/5] Fix text_metric issues

text_layout constructor's size_box_type argument needs to have
a lifetime of at least as long as the text_layout object
because it is passed in by refenerence (as documented).

text_metric was instead passing in a temporary stack value
which would then later being overwritten, leading to
text_layout.m_size.x being set to the width of a single
character and all text getting rendered in 1 letter per
line column.

Fix this by using a size_box_type variable at the same
scope level as the text_layout object.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 bear-engine/core/src/visual/code/text_metric.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/bear-engine/core/src/visual/code/text_metric.cpp b/bear-engine/core/src/visual/code/text_metric.cpp
index 7204aae..8929060 100644
--- a/bear-engine/core/src/visual/code/text_metric.cpp
+++ b/bear-engine/core/src/visual/code/text_metric.cpp
@@ -30,10 +30,10 @@ bear::visual::text_metric::text_metric( const std::string& text, const font& f )
 {
   const size_type height( text.length() * f.get_line_spacing() );
   const size_type max_size( std::numeric_limits<size_type>::max() );
+  const size_box_type s( max_size, height );
 
   text_layout_display_size func( text, f, height );
-  text_layout layout
-    ( f, text, size_box_type( max_size, height ), text_align::align_left );
+  text_layout layout( f, text, s, text_align::align_left );
 
   layout.arrange_text<text_layout_display_size&>( func );
 
-- 
2.37.1