[pygtk] Selection weirdness in TreeView
Jeffrey Barish
jeff_barish at earthlink.net
Fri Jun 17 22:47:46 WST 2011
Select a child row in a TreeView. Collapse the parent. Expand the parent.
The child is no longer selected. As illustrated in the attached program,
the child row was deselected immediately on clicking the expander to
collapse the parent -- even before the collapse signal was emitted. Is this
the behavior that we should expect? I expected that collapse/expand would
have no impact on selection. Moreover, I think that GTK used to work that
way. Regardless, I am wondering whether the current behavior is correct or
a bug. On my system, gtk.ver is (2, 21, 5) and gobject.glib_version is (2,
26, 1).
------------------------------------
"""Select a child, collapse the parent, expand the parent: the child is no
longer selected."""
import gtk
class SelectChildTestApp(object):
def __init__(self):
self.window = gtk.Window()
self.window.set_size_request(200, -1)
self.window.connect("destroy", gtk.main_quit)
treestore = gtk.TreeStore(str)
treeview = gtk.TreeView(treestore)
cell = gtk.CellRendererText()
col = gtk.TreeViewColumn('Text', cell, text=0)
treeview.append_column(col)
treeview.connect('row_collapsed', self.on_collapsed)
treesel = treeview.get_selection()
treesel.connect('changed', self.on_changed)
for i in range(5):
treeiter = treestore.append(None, ["Row %d" % i])
for j in range(3):
treestore.append(treeiter, ["Subrow (%d, %d)" % (i, j)])
treestore.append(None, ["Row %d" % (i + 1)])
self.window.add(treeview)
self.window.show_all()
def on_changed(self, treesel):
model, treepaths = treesel.get_selected_rows()
if treepaths:
print "\nSelected row:", treepaths
else:
print "\nNo row selected"
def on_collapsed(self, treeview, treeiter, treepath):
print "Row", treepath, "collapsed"
def run(self):
gtk.main()
app = SelectChildTestApp()
app.run()
--
Jeffrey Barish
More information about the pygtk
mailing list