2017-08-12 14 views
0

Chaque seconde le contenu de la table dans le gtk est mis à jour, mais après un certain temps le contenu de la table reste inchangé jusqu'à ce que la souris se déplace sur la table. La quantité qui change dans la table est la variable buf, qui est du type de temps.pourquoi la ligne ne se met pas à jour dans l'arborescence avec l'appel de la fonction gtk_list_store_set

store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview_circuit)); 

    gtk_tree_model_foreach(GTK_TREE_MODEL(store), 
          (GtkTreeModelForeachFunc) foreach_func, 
          &rr_list); 
    if (rr_list != NULL) 
    { 
     GtkTreePath *path; 

     path = gtk_tree_row_reference_get_path((GtkTreeRowReference*) rr_list->data); 

     if (path) 
     { 
      GtkTreeIter iter; 

      if (gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) 
      { 
       char buf[10]; 
       format_sec_time(buf, ci->circuit_age); 
       gtk_list_store_set(GTK_LIST_STORE(store), &iter, 
            COL_ID, ci->circ_id, 
            COL_PURPOSE, purpose[ci->purpose], 
            COL_STATE, states[ci->state], 
            COL_CREATION_TIME, ci->creation_time, 
            COL_TIMER, buf, 
            -1); 
      } 
     } 
    } 
    else 
    { 
     AddTreeViewCircuit(ci); 
    } 

    g_list_foreach(rr_list, (GFunc) gtk_tree_row_reference_free, NULL); 
    g_list_free(rr_list); 
} 

Répondre

0

Il faut mettre à jour, plus de code est nécessaire pour vérifier la réclamation. Pour contourner le problème, vous pouvez forcer l'arborescence à redessiner après la ou les mises à jour.

Ajouter:

gtk_widget_queue_draw(GTK_WIDGET(treeview_circuit)); 

après gtk_list_store_set.