Como alternar linhas claras / escuras no GtkTreeView?

Eu li e tentei as soluções existentes para esta pergunta e não consigo fazê-las funcionar. Eu esperava que alguém pudesse apontar o que estou fazendo de errado ou me dizer por que essas soluções não estão mais funcionando.

https://thegnomejournal.wordpress.com/2011/03/15/styling-gtk-with-css/ (5 anos de idade)Widgets para listar arquivos com gtk (2 anos de idade)Como você altera as cores alternadas da linha de segundo plano de um gtk.TreeView no pygtk? (4 anos de idade)https://askubuntu.com/questions/285559/how-to-reenable-alternating-grey-lines-in-nautilus-files-3-6-list-view (3 anos)

Eu queria ter certeza de que essas soluções não estavam funcionando, então criei uma folha de estilos como esta:

GtkTreeView row {
    color: #FFFFFF;
    background-color: #FF0000;
}
GtkTreeView row:nth-child(even) {
    background-color: #FF00FF;
}
GtkTreeView row:nth-child(odd) {
    background-color: #00FFFF;
}

com cores berrantes, apenas para tornar a diferença na cor da linha realmente óbvia. Então, fiz um pequeno aplicativo para carregar uma exibição em árvore:

#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
  int i;
  gtk_init(&argc,&argv);
  //GtkBuilder* b = gtk_builder_new_from_file("derp.glade.xml");
  GtkWidget* top = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  GtkListStore* items = gtk_list_store_new(2,
             ,                              G_TYPE_STRING,
                                           G_TYPE_STRING);

  GtkWidget* view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(items));
  gtk_tree_view_insert_column_with_attributes
    (GTK_TREE_VIEW(view),
     0,
     "Herp",
     gtk_cell_renderer_text_new(),
     "text",0,
     NULL);
  gtk_tree_view_insert_column_with_attributes
    (GTK_TREE_VIEW(view),
     1,
     "Derp",
     gtk_cell_renderer_text_new(),
     "text",1,
     NULL);
  gtk_container_add(GTK_CONTAINER(top),view);
  GtkCssProvider* prov = gtk_css_provider_new();
  gtk_css_provider_load_from_path
    (prov,
    "derp.css",
     NULL);
  gtk_style_context_add_provider
    (gtk_widget_get_style_context(view),
     GTK_STYLE_PROVIDER(prov),
     GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

  GtkTreeIter iter;
  gtk_tree_model_get_iter_first(GTK_TREE_MODEL(items),&iter);

  for(i=0;i<3;++i) {
    gtk_list_store_insert_with_values
      (items,&iter,0,
       0, "Row",
       1, "Row",
       -1);
  }
  gtk_widget_show_all(top);
  gtk_main();
  return 0;
}

compilado com:

gcc -o test teststyle.c `pkg-config gtk+-3.0 --cflags --libs`

Quando executo o aplicativo, as três linhas são exibidas com # 00FFFF como cor de plano de fundo. Eles não se alternam. Eles assumem apenas a cor da seção "linha: nésimo filho (ímpar)" e até as linhas pares assumem essa cor. Mexer com o arquivo css também pode fazer algumas coisas engraçadas. Alternando ímpar e par, por exemplo:

GtkTreeView row {
    color: #FFFFFF;
    background-color: #FF0000;
}
GtkTreeView row:nth-child(odd) {
    background-color: #FF00FF;
}
GtkTreeView row:nth-child(even) {
    background-color: #00FFFF;
}

Agora todas as linhas são exibidas como # FF00FF, sem alternância. Eu acho que o GTK está simplesmente deixando de ler as pseudo-classes de alguma forma, acidentalmente transformando "linha GtkTreeView: nth-child (ímpar)" em "linha GtkTreeView" e perdendo completamente o seletor "nth-child (even)". Se eu remover o seletor ímpar e só tiver par:

GtkTreeView row {
    color: #FFFFFF;
    background-color: #FF0000;
}
GtkTreeView row:nth-child(even) {
    background-color: #FF00FF;
}

Agora ele tem uma cor de plano de fundo de # FF0000, por isso ignora completamente (mesmo) as regras.

Tentei definir a dica de regras na exibição em árvore e ela não fez nada, além de reclamar que a configuração da dica de regras foi preterida. Estou usando o GTK 3.18.9, em um sistema Arch básico, com o XFCE como gerenciador de janelas. Estou fazendo algo errado aqui? Ou é a minha versão do GTK que está bagunçada, de alguma forma?

questionAnswers(2)

yourAnswerToTheQuestion