sub popup { my $menu; if ($type eq 'type1') { $menu = Gtk2::Menu->new(); my $menu_item = Gtk2::MenuItem->('Properties'); $menu_item->signal_connect(activate => sub { # do something }); $menu->append($menu_item); }elsif ($type eq 'type2') { $menu = Gtk2::Menu->new(); my $menu_item = Gtk2::MenuItem->('View'); $menu_item->signal_connect(activate => sub { # do something else }); $menu->append($menu_item); } $simple_list =>signal_connect('button-press-event' => sub { my ($widget, $event) = @_; return FALSE unless $event->button eq 3; $menu->popup ( undef, undef, undef, undef, $event->button, $event->time); } $menu->show_all; }