views:

100

answers:

1

I have a TreeModel representing a tree of Tags. Each Tag has these properties, among others:

string Name
bool Active
Tag Parent
TagList Children //basically just a List<Tag>

The TreeView has a single column, with two CellRenderers: a CellRendererToggle for Active, and a CellRendererText for Name. I want them in the same column, because multiple columns gets messy as you get farther down the descendants in the TreeView.

My problem is that when I click anywhere in the column, the CellRendererToggle is toggled. This is problematic, because I want to do things like dragging the tags, and renaming them inline. Is there any way to make the CellRendererToggle only get toggled when I click on the checkbox itself, without moving it to a separate column?

A: 

You need to set the CellRenderer's Mode to Activatable:

renderer.Mode = CellRendererMode.Activatable;

If a renderer is not activatable, but another renderer in the column is, Gtk passes on the click to that renderer. Setting your non-toggle renderers to be activatable, too, keeps them from passing on the click.

Matthew