diff options
-rwxr-xr-x | userdrake | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -587,13 +587,30 @@ sub CreateTree { $tree->set_headers_visible(1); $tree->set_rules_hint(1); $tree->get_selection->signal_connect('changed' => sub { foreach ($tbedit, $tbdel, $buttorcheck{edit}, $buttorcheck{delete}) { $_->set_sensitive(1) } }); + my $menu_treeview = Gtk2::Menu->new; + my @menu_treeview_actions = ([ 'edit', N("Edit") ], [ 'delete', N("Delete") ]); + foreach (@menu_treeview_actions) { + my ($action, $text) = @$_; + my %actions; %actions = ( + edit => sub { + my (undef, $iter) = $tree->get_selection->get_selected; + $iter and Edit() + }, + delete => sub { + my (undef, $iter) = $tree->get_selection->get_selected; + $iter and Delete(); + } + ); + $menu_treeview->append(gtksignal_connect(gtkshow(Gtk2::MenuItem->new_with_label($text)), activate => sub { $actions{$action}->() })); + } $tree->signal_connect(button_press_event => sub { my (undef, $event) = @_; my (undef, $iter) = $tree->get_selection->get_selected; return unless $iter; foreach ($tbedit, $tbdel, $buttorcheck{edit}, $buttorcheck{delete}) { $_->set_sensitive(1) }; Edit() if $event->type eq '2button-press'; - }); + $_[1]->button == 3 and $menu_treeview->popup(undef, undef, undef, undef, $_[1]->button, $_[1]->time) + }); $tree->signal_connect(key_press_event => sub { my (undef, $event) = @_; my (undef, $iter) = $tree->get_selection->get_selected; |