ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/perl/matcher
(Generate patch)

Comparing rxvt-unicode/src/perl/matcher (file contents):
Revision 1.2 by tpope, Tue Jan 9 16:18:56 2007 UTC vs.
Revision 1.5 by sf-tpope, Fri Aug 19 23:02:46 2011 UTC

15sub on_user_command { 15sub on_user_command {
16 my ($self, $cmd) = @_; 16 my ($self, $cmd) = @_;
17 if($cmd =~ s/^matcher\b//) { 17 if($cmd =~ s/^matcher\b//) {
18 $self->most_recent; 18 $self->most_recent;
19 } 19 }
20 ()
21}
22
23sub most_recent {
24 my ($self) = shift;
20 my $row = $self->nrow; 25 my $row = $self->nrow;
21 my @exec; 26 my @exec;
22 while($row-- > $self->top_row) { 27 while($row-- > $self->top_row) {
23 #my $line = $self->line ($row); 28 #my $line = $self->line ($row);
24 #my $text = $line->t; 29 #my $text = $line->t;
29 return $self->exec_async (@exec); 34 return $self->exec_async (@exec);
30 } 35 }
31 () 36 ()
32} 37}
33 38
34sub most_recent {
35 my ($self) = shift;
36 ()
37}
38
39sub my_resource { 39sub my_resource {
40 my $self = shift; 40 my $self = shift;
41 $self->x_resource("$self->{name}.$_[0]"); 41 $self->x_resource ("$self->{name}.$_[0]");
42} 42}
43 43
44# turn a rendition spec in the resource into a sub that implements it on $_ 44# turn a rendition spec in the resource into a sub that implements it on $_
45sub parse_rend { 45sub parse_rend {
46 my ($self, $str) = @_; 46 my ($self, $str) = @_;
162 () 162 ()
163} 163}
164 164
165sub on_button_press { 165sub on_button_press {
166 my ($self, $event) = @_; 166 my ($self, $event) = @_;
167 if($self->valid_button($event)) { 167 if($self->valid_button($event)
168 && (my @exec = $self->command_for($event->{row},$event->{col}))) {
168 $self->{row} = $event->{row}; 169 $self->{row} = $event->{row};
169 $self->{col} = $event->{col}; 170 $self->{col} = $event->{col};
171 $self->{cmd} = \@exec;
172 return 1;
170 } else { 173 } else {
171 delete $self->{row}; 174 delete $self->{row};
172 delete $self->{col}; 175 delete $self->{col};
176 delete $self->{cmd};
173 } 177 }
174 178
175 () 179 ()
176} 180}
177 181
178sub on_button_release { 182sub on_button_release {
179 my ($self, $event) = @_; 183 my ($self, $event) = @_;
180 184
181 my $row = delete $self->{row}; 185 my $row = delete $self->{row};
182 my $col = delete $self->{col}; 186 my $col = delete $self->{col};
187 my $cmd = delete $self->{cmd};
183 188
189 return if !defined $row;
190
184 if(defined($row) && $row == $event->{row} && abs($col-$event->{col}) < 2) { 191 if($row == $event->{row} && abs($col-$event->{col}) < 2
192 && join("\x00", @$cmd) eq join("\x00", $self->command_for($row,$col))) {
185 if($self->valid_button($event)) { 193 if($self->valid_button($event)) {
186 194
187 my @exec = $self->command_for($row,$col); 195 $self->exec_async (@$cmd);
188 if(@exec) { 196
189 return $self->exec_async (@exec);
190 } 197 }
191
192 }
193 } 198 }
194 199
195 () 200 1;
196} 201}
197 202
198# vim:set sw=3 sts=3 et: 203# vim:set sw=3 sts=3 et:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines