filechooser: Dim non-selectable items
authorMatthias Clasen <mclasen@redhat.com>
Wed, 1 Mar 2023 17:01:15 +0000 (12:01 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 10 Mar 2023 14:40:43 +0000 (15:40 +0100)
gtk/gtkfilechoosercell.c

index 7d20c70f0a552ce0b809747687c147b5723bdcc3..901e94d7b402ed0fd1f10c8216420f500220cb1c 100644 (file)
@@ -197,6 +197,15 @@ gtk_file_chooser_cell_dispose (GObject *object)
   G_OBJECT_CLASS (gtk_file_chooser_cell_parent_class)->dispose (object);
 }
 
+static gboolean
+get_selectable (GtkFileChooserCell *self)
+{
+  if (self->item)
+    return g_file_info_get_attribute_boolean (self->item, "filechooser::selectable");
+
+  return TRUE;
+}
+
 static void
 gtk_file_chooser_cell_set_property (GObject      *object,
                                     guint         prop_id,
@@ -217,6 +226,11 @@ gtk_file_chooser_cell_set_property (GObject      *object,
 
     case PROP_ITEM:
       self->item = g_value_get_object (value);
+
+      if (get_selectable (self))
+        gtk_widget_remove_css_class (GTK_WIDGET (self), "dim-label");
+      else
+        gtk_widget_add_css_class (GTK_WIDGET (self), "dim-label");
       break;
 
     case PROP_SHOW_TIME: