On Mon, 2003-12-29 at 16:00 +0800, Liu Neo-W4135C wrote:
I think the properties is for all cells in the one column, not a cell in one row. So set property will apply to all cells, not just the disabled one.
You can set cell properties per-row with a custom cell-data func. The only "gotcha" is that if you set a property once you must set it all the time. So, for example, in the cell-data func, you'd do: static void cell_data_func (GtkCellLayout *cell_layout, GtkCellRenderer *cell, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data) { if (row_is_sensitive) { fg = get_fg_color (); bg = get_bg_color (); } else { fg = bg = NULL; } g_object_set (cell, "foreground", fg, "background", bg, NULL); } Doing a subclass with a "sensitive" property would change the above to: static void cell_data_func (GtkCellLayout *cell_layout, GtkCellRenderer *cell, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data) { g_object_set (cell, "sensitive", row_is_sensitive, NULL); } And the subclass would handle the fg/bg drawing for insensitive items (using the proper theme/GtkStyle function to draw the insensitive text/ pixbuf/whatever). This method has the added benefit of allowing the programmer to simply bind the "sensitive" property to a column in the model (via gtk_cell_layout_set_attributes || gtk_cell_layout_add_attribute). -- Peace, Jim Cape http://ignore-your.tv "It is literally true that, like Christianity, Socialism has conquered the world by defeating itself." -- Alexander Berkman, ABC of Anarchism
Attachment:
signature.asc
Description: This is a digitally signed message part