implement sourcelist item badge (GTK)

Tue, 19 Aug 2025 21:14:00 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Tue, 19 Aug 2025 21:14:00 +0200
changeset 699
148618eff948
parent 698
3496032f0dd0
child 700
7032f69a325c

implement sourcelist item badge (GTK)

ui/gtk/list.c file | annotate | diff | comparison | revisions
ui/gtk/toolkit.c file | annotate | diff | comparison | revisions
--- a/ui/gtk/list.c	Tue Aug 19 14:13:43 2025 +0200
+++ b/ui/gtk/list.c	Tue Aug 19 21:14:00 2025 +0200
@@ -2031,7 +2031,19 @@
     
     g_object_set_data(G_OBJECT(row), "ui-listbox-row-eventdata", event);
     
-    // TODO: badge
+    // badge
+    if(item->badge) {
+        GtkWidget *badge = gtk_label_new(item->badge);
+        WIDGET_ADD_CSS_CLASS(badge, "ui-badge");
+#if GTK_CHECK_VERSION(4, 0, 0)
+        gtk_widget_set_valign(badge, GTK_ALIGN_CENTER);
+        BOX_ADD(hbox, badge);
+#else
+        GtkWidget *align = gtk_alignment_new(0.5, 0.5, 0, 0);
+        gtk_container_add(GTK_CONTAINER(align), badge);
+        BOX_ADD(hbox, align);
+#endif
+    }
     // button
     if(item->button_icon || item->button_label) {
         GtkWidget *button = gtk_button_new();
--- a/ui/gtk/toolkit.c	Tue Aug 19 14:13:43 2025 +0200
+++ b/ui/gtk/toolkit.c	Tue Aug 19 21:14:00 2025 +0200
@@ -395,6 +395,15 @@
 "  margin-top: 4px;\n"
 "  margin-bottom: 10px;\n"
 "}\n"
+".ui-badge {\n"
+"  background-color: #e53935;\n"
+"  color: white;\n"
+"  border-radius: 9999px;\n"
+"  padding: 0px 10px 0px 10px;\n"
+"  font-weight: bold;\n"
+"  margin-left: 4px;"
+"  margin-right: 4px;"
+"}\n"
 ;
 
 #elif GTK_MAJOR_VERSION == 3
@@ -428,6 +437,15 @@
 "  margin-top: 4px;\n"
 "  margin-bottom: 10px;\n"
 "}\n"
+".ui-badge {\n"
+"  background-color: #e53935;\n"
+"  color: white;\n"
+"  border-radius: 9999px;\n"
+"  padding: 0px 10px 0px 10px;\n"
+"  font-weight: bold;\n"
+"  margin-left: 4px;"
+"  margin-right: 4px;"
+"}\n"
 ;
 #endif
 

mercurial