package My::CellRendererText; use strict; use warnings; use Gtk2; use Scalar::Util; print Gtk2->VERSION,"\n"; use Glib::Object::Subclass 'Gtk2::CellRendererText'; sub START_EDITING { my ($self, @args) = @_; my $entry = Gtk2::Entry->new; print "START_EDITING with $entry\n"; $entry->signal_connect (destroy => \&_do_destroy); return $entry; } sub _do_destroy { my ($entry) = @_; print "destroy $entry\n"; } package main; use strict; use warnings; use Gtk2 '-init'; my $liststore = Gtk2::ListStore->new ('Glib::String'); $liststore->set_value ($liststore->append, 0 => 'abc'); $liststore->set_value ($liststore->append, 0 => 'def'); my $toplevel = Gtk2::Window->new('toplevel'); $toplevel->signal_connect (destroy => sub { Gtk2->main_quit }); my $iconview = Gtk2::IconView->new; $iconview->set (model => $liststore); $toplevel->add ($iconview); my $cellrenderer = My::CellRendererText->new (editable => 1); $iconview->pack_start ($cellrenderer, 0); $iconview->add_attribute ($cellrenderer, text => 0); $toplevel->show_all; Gtk2->main; exit 0;