*** empty log message ***
authorroot <root>
Fri, 20 Jan 2006 15:24:24 +0000 (15:24 +0000)
committerroot <root>
Fri, 20 Jan 2006 15:24:24 +0000 (15:24 +0000)
src/perl/automove-background
src/perl/tabbed

index ab5697e22b8e4a4646bc246340ae14fb4afc6c5f..d6d5570be7e890c487d921a5a23a0ef7f659d438 100644 (file)
@@ -2,11 +2,17 @@
 
 sub on_configure_notify {
    my ($self, $event) = @_;
+   
+   my ($x, $y);
 
-   my ($x, $y) = $self->XTranslateCoordinates (
-      $self->parent, $self->DefaultRootWindow,
-      0, 0
-   );
+   if ($event->{send_event}) {
+      ($x, $y) = ($event->{x}, $event->{y});
+   } else {
+      ($x, $y) = $self->XTranslateCoordinates (
+         $self->parent, $self->DefaultRootWindow,
+         0, 0
+      );
+   }
 
    $self->cmd_parse ("\033]20;;=+$x+$y\007");
 }
index 3e16b46dac04b907ac7e3caaafd3edc556b59158..ecc9db32c593055701f4891df7dddf3b05e17a6c 100644 (file)
@@ -3,24 +3,38 @@
 sub refresh {
    my ($self) = @_;
 
-   my $cmd = "\x1b[H\x1b[7m\x1b[K";
+   my $ncol = $self->ncol;
+
+   my $text = " " x $ncol;
+   my $rend = [(urxvt::DEFAULT_RSTYLE | urxvt::RS_RVid) x $ncol];
+
    my $txt;
-   my @ofs = (0);
+   my $ofs = 0;
+   my @ofs;
 
    for my $tab (@{ $self->{tabs} }) {
-      if ($tab == $self->{cur}) {
-         $txt = " [$tab->{name}] ";
-      } else {
-         $txt = "  $tab->{name}  ";
-      }
-
-      $cmd .= $txt;
-      push @ofs, $ofs[-1] + length $txt;
+      my $txt = " $tab->{name} ";
+      my $len = length $txt;
+
+      substr $text, $ofs, $len + 1, "$txt|";
+      @$rend[$ofs .. $ofs + $len - 1] = (urxvt::OVERLAY_RSTYLE) x $len;
+
+      push @ofs, [
+         $ofs,
+         $ofs + $len,
+         sub {
+            my ($self, $event) = @_;
+            $self->make_current ($tab);
+         },
+      ];
+
+      $ofs += $len + 1;
    }
 
    $self->{tabofs} = \@ofs;
 
-   $self->cmd_parse ($self->locale_encode ($cmd));
+   $self->ROW_t (0, $text);
+   $self->ROW_r (0, $rend);
 }
 
 sub new_tab {
@@ -67,11 +81,14 @@ sub configure {
       if ($atom == $wm_normal_hints) {
          my (@hints) = unpack "l!*", $items;
 
-         $hints[ 4] += $self->{tabheight};
-         $hints[16] += $self->{tabheight};
+         $hints[$_] += $self->{tabheight} for (4, 6, 16);
+
+         $items = pack "l!*", @hints;
       }
       $self->XChangeWindowProperty ($self->parent, $atom, $type, $format, $items);
    }
+
+   $self->refresh;
 }
 
 sub make_current {
@@ -100,14 +117,11 @@ sub on_button_press {
 sub on_button_release {
    my ($self, $event) = @_;
 
-   my $ofs = $self->{tabofs};
-
    if ($event->{row} == 0) {
-      for my $i (0 .. @$ofs - 2) {
-         if ($event->{col} >= $ofs->[$i]
-             && $event->{col} < $ofs->[$i+1]) {
-            $self->make_current ($self->{tabs}[$i]);
-         }
+      for my $button (@{ $self->{tabofs} }) {
+         $button->[2]->($self, $event)
+            if $event->{col} >= $button->[0]
+               && $event->{col} < $button->[1];
       }
    }