TreeView returning a COPY of my renderer?


I’m writing an API to handle treeviews, and listviews. I’m having a
problem with subclassing renderers. I subclassed
Gtk::CellRendererToggle, and I’m trying to give it “radio” button

class VR_CellRendererToggle < Gtk::CellRendererToggle

attr_accessor :radiox

def initialize
@radiox = false


This works fine. I create an instance of it and append() the column to
my treeview. The problem occurs when I try to retrieve it, and set the
“radio” instance variable to true:

@view.columns(CHECK_BOXES).cellrenderers[0].radiox = true

This has no effect because the renderer in the above statement returns a
copy of the renderer. I’ve verified this by showing each object’s
object_id on the screen. They don’t match.

Is this how its supposed to work? What can I do?


This might be a clue about what’s going on. When I run my program, I
get about 18 of these warnings:

GLib-GObject-WARNING **:unable to set property text' of typegchararray’ from value of type `VALUE’
ListViewDemo.rb: line 15

(line 15 is Gtk.main)

I have 6 lines of data, so I think that 3 of my fields are generating
this warning. Upon googling this, I learned that the “type” of the
renderer isn’t generating a proper value for the “text” field. Since
I’m populating my model with various subclasses of objects, It must be
causing a problem. Is it possible this is messing up the references to
the renderers?

Does anyone know about this?


Nevermind. I solved it! It turns out that I was adding a
UserDefinedObject into my model/view and it was making everything go
haywire. In fact, the IDE that I’m writing started behaving strangely
too because all the object_ids were switched around (I think).

So, the moral of this story, is make sure you only add objects that
properly render a :text field.