libsysprof-gtk: some progress style and text tweaks

This commit is contained in:
Christian Hergert
2023-06-09 15:15:40 -07:00
parent 626ccdce4d
commit 89173fdce7
2 changed files with 21 additions and 6 deletions

View File

@ -5,6 +5,10 @@ progresscell progress {
border-right: none; border-right: none;
} }
progresscell {
min-height: 18px;
}
progresscell progress:backdrop { progresscell progress:backdrop {
background: @borders; background: @borders;
border-color: shade(@borders, .9); border-color: shade(@borders, .9);
@ -19,6 +23,7 @@ progresscell trough {
progresscell label { progresscell label {
font-size: 0.9em; font-size: 0.9em;
padding: 1px 3px; padding: 1px 3px;
font-feature-settings: 'tnum';
} }
progresscell label.in-progress { progresscell label.in-progress {

View File

@ -61,9 +61,11 @@ sysprof_progress_cell_size_allocate (GtkWidget *widget,
gtk_widget_size_allocate (GTK_WIDGET (self->label), &all, baseline); gtk_widget_size_allocate (GTK_WIDGET (self->label), &all, baseline);
gtk_widget_size_allocate (GTK_WIDGET (self->alt_label), &all, baseline); gtk_widget_size_allocate (GTK_WIDGET (self->alt_label), &all, baseline);
gtk_widget_size_allocate (GTK_WIDGET (self->trough), &all, baseline); gtk_widget_size_allocate (GTK_WIDGET (self->trough), &all, baseline);
gtk_widget_size_allocate (GTK_WIDGET (self->progress),
&(const GtkAllocation) {0, 0, width*self->fraction, height}, if (gtk_widget_get_visible (GTK_WIDGET (self->progress)))
baseline); gtk_widget_size_allocate (GTK_WIDGET (self->progress),
&(const GtkAllocation) {0, 0, MAX (1, width*self->fraction), height},
baseline);
} }
static void static void
@ -207,15 +209,21 @@ sysprof_progress_cell_class_init (SysprofProgressCellClass *klass)
static void static void
sysprof_progress_cell_init (SysprofProgressCell *self) sysprof_progress_cell_init (SysprofProgressCell *self)
{ {
char percent[32];
_sysprof_css_init (); _sysprof_css_init ();
g_snprintf (percent, sizeof percent, "%6.2lf%%", .0);
self->label = g_object_new (GTK_TYPE_LABEL, self->label = g_object_new (GTK_TYPE_LABEL,
"halign", GTK_ALIGN_CENTER, "halign", GTK_ALIGN_END,
"valign", GTK_ALIGN_CENTER, "valign", GTK_ALIGN_CENTER,
"label", percent,
NULL); NULL);
self->alt_label = g_object_new (GTK_TYPE_LABEL, self->alt_label = g_object_new (GTK_TYPE_LABEL,
"halign", GTK_ALIGN_CENTER, "halign", GTK_ALIGN_END,
"valign", GTK_ALIGN_CENTER, "valign", GTK_ALIGN_CENTER,
"label", percent,
NULL); NULL);
gtk_widget_add_css_class (GTK_WIDGET (self->alt_label), "in-progress"); gtk_widget_add_css_class (GTK_WIDGET (self->alt_label), "in-progress");
self->trough = g_object_new (ADW_TYPE_BIN, self->trough = g_object_new (ADW_TYPE_BIN,
@ -223,6 +231,7 @@ sysprof_progress_cell_init (SysprofProgressCell *self)
NULL); NULL);
self->progress = g_object_new (ADW_TYPE_BIN, self->progress = g_object_new (ADW_TYPE_BIN,
"css-name", "progress", "css-name", "progress",
"visible", FALSE,
NULL); NULL);
gtk_widget_set_parent (GTK_WIDGET (self->trough), GTK_WIDGET (self)); gtk_widget_set_parent (GTK_WIDGET (self->trough), GTK_WIDGET (self));
@ -259,10 +268,11 @@ sysprof_progress_cell_set_fraction (SysprofProgressCell *self,
self->fraction = fraction; self->fraction = fraction;
g_snprintf (text, sizeof text, "%.2lf%%", fraction*100.); g_snprintf (text, sizeof text, "%6.2lf%%", fraction*100.);
gtk_label_set_text (self->label, text); gtk_label_set_text (self->label, text);
gtk_label_set_text (self->alt_label, text); gtk_label_set_text (self->alt_label, text);
gtk_widget_set_visible (GTK_WIDGET (self->progress), fraction > .0);
gtk_widget_queue_allocate (GTK_WIDGET (self)); gtk_widget_queue_allocate (GTK_WIDGET (self));
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_FRACTION]); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_FRACTION]);