… | |
… | |
42 | |
42 | |
43 | $self->want_refresh; |
43 | $self->want_refresh; |
44 | } |
44 | } |
45 | |
45 | |
46 | sub new_tab { |
46 | sub new_tab { |
47 | my ($self) = @_; |
47 | my ($self, @argv) = @_; |
48 | |
48 | |
49 | my $offset = $self->fheight; |
49 | my $offset = $self->fheight; |
50 | |
50 | |
51 | # save a backlink to us, make sure tabbed is inactive |
51 | # save a backlink to us, make sure tabbed is inactive |
52 | push @urxvt::TERM_INIT, sub { |
52 | push @urxvt::TERM_INIT, sub { |
… | |
… | |
63 | push @urxvt::TERM_EXT, urxvt::ext::tabbed::tab::; |
63 | push @urxvt::TERM_EXT, urxvt::ext::tabbed::tab::; |
64 | |
64 | |
65 | my $term = new urxvt::term |
65 | my $term = new urxvt::term |
66 | $self->env, $urxvt::RXVTNAME, |
66 | $self->env, $urxvt::RXVTNAME, |
67 | -embed => $self->parent, |
67 | -embed => $self->parent, |
|
|
68 | @argv, |
68 | ; |
69 | ; |
69 | } |
70 | } |
70 | |
71 | |
71 | sub configure { |
72 | sub configure { |
72 | my ($self) = @_; |
73 | my ($self) = @_; |
… | |
… | |
242 | |
243 | |
243 | $self->{tabheight} = $self->int_bwidth + $self->fheight + $self->lineSpace; |
244 | $self->{tabheight} = $self->int_bwidth + $self->fheight + $self->lineSpace; |
244 | |
245 | |
245 | $self->cmd_parse ("\033[?25l"); |
246 | $self->cmd_parse ("\033[?25l"); |
246 | |
247 | |
|
|
248 | my @argv = $self->argv; |
|
|
249 | |
|
|
250 | do { |
|
|
251 | shift @argv; |
|
|
252 | } while @argv && $argv[0] ne "-e"; |
|
|
253 | |
247 | $self->new_tab; |
254 | $self->new_tab (@argv); |
248 | |
255 | |
249 | () |
256 | () |
250 | } |
257 | } |
251 | |
258 | |
252 | sub on_configure_notify { |
259 | sub on_configure_notify { |
… | |
… | |
312 | $self->make_current ($self->{tabs}[$idx % @{ $self->{tabs}}]); |
319 | $self->make_current ($self->{tabs}[$idx % @{ $self->{tabs}}]); |
313 | |
320 | |
314 | return 1; |
321 | return 1; |
315 | } elsif ($keysym == 0xff54) { |
322 | } elsif ($keysym == 0xff54) { |
316 | $self->new_tab; |
323 | $self->new_tab; |
|
|
324 | |
|
|
325 | return 1; |
|
|
326 | } |
|
|
327 | } |
|
|
328 | elsif ($event->{state} & urxvt::ControlMask) { |
|
|
329 | if ($keysym == 0xff51 || $keysym == 0xff53) { |
|
|
330 | my ($idx1) = grep $self->{tabs}[$_] == $tab, 0 .. $#{ $self->{tabs} }; |
|
|
331 | my $idx2 = ($idx1 + ($keysym == 0xff51 ? -1 : +1)) % @{ $self->{tabs} }; |
|
|
332 | |
|
|
333 | ($self->{tabs}[$idx1], $self->{tabs}[$idx2]) = |
|
|
334 | ($self->{tabs}[$idx2], $self->{tabs}[$idx1]); |
|
|
335 | |
|
|
336 | $self->make_current ($self->{tabs}[$idx2]); |
317 | |
337 | |
318 | return 1; |
338 | return 1; |
319 | } |
339 | } |
320 | } |
340 | } |
321 | |
341 | |