2

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?

gpoo
  • 8,408
  • 3
  • 38
  • 53
Matthew
  • 28,056
  • 26
  • 104
  • 170

1 Answers1

3

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
  • 28,056
  • 26
  • 104
  • 170