diff mbox series

matchbox-panel-2: fix clock widget width resize

Message ID 20260518132106.1296563-1-frezidok1@gmail.com
State New
Headers show
Series matchbox-panel-2: fix clock widget width resize | expand

Commit Message

Dmitry Sakhonchik May 18, 2026, 1:21 p.m. UTC
From: Dmitry Sakhonchik <frezidok1@gmail.com>

Previously clock widget used to change its size depending on digits' width inside it, which caused other icons in the panel to move.

Fixes [YOCTO #15435]

Signed-off-by: Dmitry Sakhonchik <frezidok1@gmail.com>
---
 applets/clock/clock.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)
diff mbox series

Patch

diff --git a/applets/clock/clock.c b/applets/clock/clock.c
index b8057a4..3065cfc 100644
--- a/applets/clock/clock.c
+++ b/applets/clock/clock.c
@@ -73,6 +73,7 @@  mb_panel_applet_create (const char    *id,
         GtkWidget *label;
         time_t t;
         struct tm *local_time;
+        int ref_string_width;
 
         applet = g_slice_new0 (ClockApplet);
 
@@ -81,6 +82,17 @@  mb_panel_applet_create (const char    *id,
 
         gtk_widget_set_name (label, "MatchboxPanelClock");
 
+        /* Size the widget using the widest possible time string ("88:88") */
+        PangoContext *context = gtk_widget_get_pango_context(label);
+        PangoLayout *reference_string = pango_layout_new(context);
+
+        pango_layout_set_text(reference_string, "88:88", 5);
+        pango_layout_get_pixel_size(reference_string, &ref_string_width, NULL);
+
+        g_object_unref(reference_string);
+
+        gtk_widget_set_size_request(label, ref_string_width, -1);
+
         g_object_weak_ref (G_OBJECT (label),
                            (GWeakNotify) clock_applet_free,
                            applet);