--- rxvt-unicode/src/perl/matcher 2007/01/09 16:18:56 1.2 +++ rxvt-unicode/src/perl/matcher 2011/08/19 23:02:46 1.5 @@ -17,6 +17,11 @@ if($cmd =~ s/^matcher\b//) { $self->most_recent; } + () +} + +sub most_recent { + my ($self) = shift; my $row = $self->nrow; my @exec; while($row-- > $self->top_row) { @@ -31,14 +36,9 @@ () } -sub most_recent { - my ($self) = shift; - () -} - sub my_resource { my $self = shift; - $self->x_resource("$self->{name}.$_[0]"); + $self->x_resource ("$self->{name}.$_[0]"); } # turn a rendition spec in the resource into a sub that implements it on $_ @@ -164,12 +164,16 @@ sub on_button_press { my ($self, $event) = @_; - if($self->valid_button($event)) { + if($self->valid_button($event) + && (my @exec = $self->command_for($event->{row},$event->{col}))) { $self->{row} = $event->{row}; $self->{col} = $event->{col}; + $self->{cmd} = \@exec; + return 1; } else { delete $self->{row}; delete $self->{col}; + delete $self->{cmd}; } () @@ -180,19 +184,20 @@ my $row = delete $self->{row}; my $col = delete $self->{col}; + my $cmd = delete $self->{cmd}; - if(defined($row) && $row == $event->{row} && abs($col-$event->{col}) < 2) { + return if !defined $row; + + if($row == $event->{row} && abs($col-$event->{col}) < 2 + && join("\x00", @$cmd) eq join("\x00", $self->command_for($row,$col))) { if($self->valid_button($event)) { - my @exec = $self->command_for($row,$col); - if(@exec) { - return $self->exec_async (@exec); - } + $self->exec_async (@$cmd); } } - () + 1; } # vim:set sw=3 sts=3 et: