--- CV/bin/cv 2003/11/03 16:44:19 1.8 +++ CV/bin/cv 2003/11/03 23:34:43 1.9 @@ -7,13 +7,14 @@ use Gtk2::CV::Schnauzer; my $viewer; +my $schnauzer; sub new_schnauzer { my $w = new Gtk2::Window; $w->add (my $s = new Gtk2::CV::Schnauzer); $s->signal_connect (activate => sub { $viewer->load_image ($_[1]) }); - $s->signal_connect (key_press_event => \&std_keys); + $s->signal_connect_after (key_press_event => \&std_keys); $s->set_dir ("."); $w->show_all; @@ -23,15 +24,16 @@ sub std_keys { my $key = $_[1]->keyval; + my $state = $_[1]->state; - my $ctrl = grep $_ eq "control-mask", @{$_[1]->state}; + my $ctrl = grep $_ eq "control-mask", @$state; if ($key == $Gtk2::Gdk::Keysyms{q}) { main_quit Gtk2; } elsif ($ctrl && $key == $Gtk2::Gdk::Keysyms{v}) { new_schnauzer; } else { - return 0; + $schnauzer->handle_key ($key, $state); } 1; @@ -41,11 +43,13 @@ $viewer->signal_connect (key_press_event => \&std_keys); $viewer->signal_connect (delete_event => sub { main_quit Gtk2 }); +$schnauzer = new_schnauzer; + if (@ARGV) { $viewer->load_image ($ARGV[0]); if (@ARGV > 1) { - new_schnauzer->set_files (\@ARGV); + $schnauzer->set_files (\@ARGV); } }