################################################ #!/usr/bin/perl use strict; use warnings; use Gtk2 -init; use Gtk2::Ex::Simple::List; use Glib ':constants'; my %activity_list = ( O => 'One', M => 'Two', U => 'Five', E => 'Three, Sir, Three!', A => 'BOOM' ); my %activity_order = ('O' => 'M', 'M' => 'U', 'U' => 'E', 'E' => 'A', 'A' => 'O'); my %activities_rev = reverse %activity_list; my $win = Gtk2::Window->new; $win->set_border_width (6); $win->signal_connect (delete_event => sub { Gtk2->main_quit; }); my $tslist = Gtk2::Ex::Simple::List->new ( "Special column" => 'markup', "Normal column" => 'text' ); $win->add ($tslist); $tslist->get_selection->set_mode ('single'); $tslist->set_reorderable(FALSE); $tslist->set_column_editable (0, FALSE); $tslist->set_column_editable (1, TRUE); my $dtslist = $tslist->{data}; push @$dtslist, [ $activity_list{M}, "text" ], [ $activity_list{O}, "text2" ]; my @columns = $tslist->get_columns; $tslist->signal_connect('button-release-event' => sub { my ($self, $event) = @_; my ($path, $column, $cell_x, $cell_y) = $tslist->get_path_at_pos ($event->x, $event->y ); # <------- !!!!! if ($path) { if ($column == $columns[0]) { my $row = $path->to_string; my $value = $dtslist->[$row][0]; $dtslist->[$row][0] = $activity_list{$activity_order{$activities_rev{$value}}}; } } }); $win->show_all; Gtk2->main; ################################################