Re: GtkTreeView: getting selection



Romain Lievin wrote:

Hi,

I am developping the GTK+ version of the new 2.5 kernel configurator...

I am using GtkTreeModel & GtkTreeView for displaying a tree.
I would like to retrieve the row and column which have been clicked by the
user.
The code below works unless you horizontally scroll the view.
Why ?

Is there any better way for doing this ?
I would tend to make a function that returns the values you want as below:


gboolean model_get_selection(gchar **name, gchar **jid)
{
 GtkTreeSelection *selection;
 GtkTreeModel *model = GTK_TREE_MODEL(treestore);
 GtkTreeIter iter;

 if(name == NULL || jid == NULL)
   {
g_warning("model_get_selection: name or JID pointers passed were NULL");
     return FALSE;
   }

 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
 if(gtk_tree_selection_get_selected(selection,&model,&iter) == FALSE)
   return FALSE;

 gtk_tree_model_get(model, &iter,
            COL_ROSTER_NAME, name,
            COL_ROSTER_JID, jid,
-1);
 return TRUE;
}

Note.  This doesnt work for mutliple selections.
Hope it helps,

Martyn


Thanks, Romain.


[================ snippet ======================]
gboolean
on_treeview1_button_press_event        (GtkWidget       *widget,
                                       GdkEventButton  *event,
                                       gpointer         user_data)
{
        GtkTreeView       *view  = GTK_TREE_VIEW (tree_wnd);
        GtkTreePath       *path;
        GtkTreeViewColumn *column;
        GtkTreeIter        iter;
        struct menu       *menu;
        gint cx, cy;
        gint tx, ty;
        gint wx, wy;

        tx = event->x;
        ty = event->y;

        gtk_tree_view_tree_to_widget_coords (view, tx, ty, &wx, &wy);
        gtk_tree_view_get_path_at_pos (view, wx, wy, &path, &column, &cx, &cy);
        //printf("%i %i %i %i %i %i\n", tx, ty, wx, wy, cx, cy);

        gtk_tree_view_get_cursor (view, &path, &column);
        if(path == NULL) {
                g_warning("button_press_event: path is NULL !\n");
                return FALSE;
        }

        gtk_tree_model_get_iter (model, &iter, path);
        gtk_tree_model_get (model, &iter, PTR_COLUMN, &menu, -1);

        change_sym_value(menu, column2index(column));
        set_node(&iter, menu, fill_row(menu));

        return FALSE;
}
[================ snippet ======================]
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list







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