Highlight row in tree view



How do I set a row in a tree view list to be selected in the same manner
as if it were clicked upon?

The tree view that I am using is populated with two columns. The first
is not visible, and the second is displayed. So the user sees a one
column selection where they are able to select one of the rows from the
list.

On initial display I want to be able to pre-select one of the rows, and
present the list to the user with that pre-selected row highlighted as
if it were click upon.

Essentially the program goes something like the following:

        gtk_list_store_append(model, iter);
        gtk_list_store_set( model, iter, -1);
        g_value_init(&value, G_TYPE_STRING);
        g_value_set_string (&value,str);
        gtk_list_store_set_value(model, iter, i, &value);

        tv = gtk_tree_view_new_with_model((GtkTreeModel*)model);

        renderer = gtk_cell_renderer_text_new();
        gtk_tree_view_insert_column_with_attributes(
                GTK_TREE_VIEW(tv),
                -1,
                heading,
                renderer,
                "markup",
                i,
                NULL);

        gtk_tree_selection_select_iter(
                gtk_tree_view_get_selection(GTK_TREE_VIEW(tv)),
                &initial_iter);
        path_to_initial_row = (GtkTreePath *)gtk_tree_model_get_path(
                (GtkTreeModel*)model, &initial_iter);

        gtk_tree_view_scroll_to_cell(
                GTK_TREE_VIEW(tv),
                path_to_initial_row,
                NULL,   /* as we want no column move */
                TRUE,   /* yes use alignments */
                0.5,    /* align vertical to middle */
                0);     /* align Left Hand Side */

        gtk_tree_view_set_cursor(GTK_TREE_VIEW(tv),
                path_to_initial_row, NULL, FALSE);

The last statement "gtk_tree_view_set_cursor" has no effect, and is my
best guess at getting the selected row to be highlighted. What happens
is that the row is greyed, and I suspect that means the row is selected,
but does not have focus. I want it to have focus, so that when the user
presses enter, the current line is returned as the selected one.

What I need to do, is get the program to recognise an initial row, so
that when the user does not click on anything, the initial row is
initially displayed as having focus, and therefore is the selected row
upon return from the window.





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]