package Gtk2::CellRendererTextThatIsNotCompletelyUseless; use Glib::Object::Subclass "Gtk2::CellRendererText"; sub START_EDITING { my ($self, $event, $view, $pathstr, $back_rect, $cell_rect, $flags) = @_; my $entry = shift->SUPER::START_EDITING(@_); $self->signal_handler_disconnect($self->{bad_hack}) if exists $self->{bad_hack}; $self->{bad_hack} = $self->signal_connect( 'editing-canceled' => sub { my ( $event_box, $event ) = @_; $self->signal_emit( edited => $pathstr, $entry->get_text() ); return 0; } ); return $entry; }