static void gtvo_set_column_editor(GncTreeViewOwner *view, GtkTreeViewColumn *column, GncTreeViewOwnerColumnTextEdited edited_cb) { GList *renderers_orig, *renderers; GtkCellRenderer *renderer; // look for the first text-renderer; on the 0th column of the owner tree, // there are two renderers: pixbuf and text. So find the text one. for (renderers_orig = renderers = gtk_tree_view_column_get_cell_renderers(column); renderers && !GTK_IS_CELL_RENDERER_TEXT(renderers->data); renderers = renderers->next); renderer = GTK_CELL_RENDERER(renderers->data); g_list_free(renderers_orig); g_return_if_fail(renderer != NULL); gtvo_setup_column_renderer_edited_cb(GNC_TREE_VIEW_OWNER(view), column, renderer, edited_cb); }
GtkCellRenderer * gitg_utils_find_cell_at_pos (GtkTreeView *tree_view, GtkTreeViewColumn *column, GtkTreePath *path, gint x) { GList *cells; GList *item; GtkTreeIter iter; GtkTreeModel *model = gtk_tree_view_get_model (tree_view); gtk_tree_model_get_iter (model, &iter, path); gtk_tree_view_column_cell_set_cell_data (column, model, &iter, FALSE, FALSE); cells = gtk_tree_view_column_get_cell_renderers (column); GtkCellRenderer *ret = NULL; for (item = cells; item; item = g_list_next (item)) { GtkCellRenderer *renderer = GTK_CELL_RENDERER (item->data); gint start; gint width; if (!gtk_tree_view_column_cell_get_position (column, renderer, &start, &width)) { continue; } gtk_cell_renderer_get_size (renderer, GTK_WIDGET (tree_view), NULL, NULL, NULL, &width, 0); if (x >= start && x <= start + width) { ret = renderer; break; } } g_list_free (cells); return ret; }
static void greeter_generate_userlist (GtkWidget *tv, GreeterItemInfo *info) { GtkTreeModel *tm; GtkTreeViewColumn *column_one, *column_two; GtkTreeSelection *selection; GList *list, *li; mdm_greeter_users_init (); check_for_displays (); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tv), FALSE); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (tv), FALSE); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tv)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); if (users != NULL) { g_signal_connect (selection, "changed", G_CALLBACK (user_selected), NULL); g_signal_connect (GTK_TREE_VIEW (tv), "button_release_event", G_CALLBACK (browser_change_focus), NULL); tm = (GtkTreeModel *)gtk_list_store_new (4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); gtk_tree_view_set_model (GTK_TREE_VIEW (tv), tm); column_one = gtk_tree_view_column_new_with_attributes (_("Icon"), gtk_cell_renderer_pixbuf_new (), "pixbuf", GREETER_ULIST_ICON_COLUMN, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tv), column_one); column_two = gtk_tree_view_column_new_with_attributes (_("Username"), gtk_cell_renderer_text_new (), "markup", GREETER_ULIST_LABEL_COLUMN, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tv), column_two); greeter_populate_user_list (tm); list = gtk_tree_view_column_get_cell_renderers (column_one); for (li = list; li != NULL; li = li->next) { GtkObject *cell = li->data; if (info->data.list.icon_color != NULL) g_object_set (cell, "cell-background", info->data.list.icon_color, NULL); } list = gtk_tree_view_column_get_cell_renderers (column_two); for (li = list; li != NULL; li = li->next) { GtkObject *cell = li->data; if (info->data.list.label_color != NULL) g_object_set (cell, "background", info->data.list.label_color, NULL); } } /* we are done with the hash */ g_hash_table_destroy (displays_hash); displays_hash = NULL; }
static VALUE tvc_get_cell_renderers(VALUE self) { return GLIST2ARYF(gtk_tree_view_column_get_cell_renderers(_SELF(self))); }