--- rxvt-unicode/src/perl/tabbed 2006/01/20 15:47:55 1.8 +++ rxvt-unicode/src/perl/tabbed 2006/01/20 16:18:07 1.10 @@ -20,7 +20,10 @@ for my $tab (@{ $self->{tabs} }) { $idx++; - my $txt = " $idx "; + my $act = $tab->{activity} && $tab != $self->{cur} + ? "*" : " "; + + my $txt = "$act$idx$act"; my $len = length $txt; substr $text, $ofs, $len + 1, "$txt|"; @@ -98,6 +101,7 @@ my ($self, $tab) = @_; if (my $cur = $self->{cur}) { + delete $cur->{activity}; $cur->XUnmapWindow ($cur->parent) if $cur->mapped; $cur->focus_out; } @@ -107,6 +111,7 @@ $self->configure; $tab->focus_in; $tab->XMapWindow ($tab->parent); + delete $tab->{activity}; $self->refresh; () @@ -213,22 +218,32 @@ sub tab_key_press { my ($self, $tab, $event, $keysym, $str) = @_; - if ($event->{state} & urxvt::ShiftMask - && ($keysym == 0xff51 || $keysym == 0xff53)) { - my ($idx) = grep $self->{tabs}[$_] == $tab, 0 .. $#{ $self->{tabs} }; - - --$idx if $keysym == 0xff51; - ++$idx if $keysym == 0xff53; + if ($event->{state} & urxvt::ShiftMask) { + if ($keysym == 0xff51 || $keysym == 0xff53) { + my ($idx) = grep $self->{tabs}[$_] == $tab, 0 .. $#{ $self->{tabs} }; + + --$idx if $keysym == 0xff51; + ++$idx if $keysym == 0xff53; + + $self->make_current ($self->{tabs}[$idx % @{ $self->{tabs}}]); + + return 1; + } elsif ($keysym == 0xff54) { + $self->new_tab; - $self->make_current ($self->{tabs}[$idx % @{ $self->{tabs}}]); - $self->refresh; - - return 1; + return 1; + } } () } +sub tab_activity { + my ($self, $tab) = @_; + + $self->refresh; +} + package urxvt::ext::tabbed::tab; # helper extension implementing the subwindows of a tabbed terminal. @@ -247,5 +262,10 @@ } } +sub on_add_lines { + $_[0]->{activity}++ + or $_[0]{term}{parent}->tab_activity ($_[0]); + () +}