From 5b3f0c2497a104d3e62a33bc3196ba04f709957b Mon Sep 17 00:00:00 2001 From: yggverse Date: Tue, 30 Jul 2024 14:39:51 +0300 Subject: [PATCH] use label widget as contain destroy method to free memory on width rule iteration --- src/Abstract/Model/Gtk/Pango/Markup.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Abstract/Model/Gtk/Pango/Markup.php b/src/Abstract/Model/Gtk/Pango/Markup.php index c1936325..85b4a5a3 100644 --- a/src/Abstract/Model/Gtk/Pango/Markup.php +++ b/src/Abstract/Model/Gtk/Pango/Markup.php @@ -4,8 +4,7 @@ declare(strict_types=1); namespace Yggverse\Yoda\Abstract\Model\Gtk\Pango; -use \PangoLayout; -use \GtkDrawingArea; +use \GtkLabel; class Markup implements \Yggverse\Yoda\Interface\Model\Gtk\Pango\Markup { @@ -143,16 +142,20 @@ class Markup implements \Yggverse\Yoda\Interface\Model\Gtk\Pango\Markup string $markup ): ?int { - $layout = new PangoLayout( // @TODO cleanup - (new GtkDrawingArea)->create_pango_context() + $label = new GtkLabel; + + $label->set_use_markup( + true ); - $layout->set_markup( + $label->set_markup( $markup, -1 ); - if ($size = $layout->get_pixel_size()) + if ($size = $label->get_layout()->get_pixel_size()) { + $label->destroy(); + return $size['width']; }