*** empty log message ***
authorroot <root>
Tue, 3 Jan 2006 01:15:00 +0000 (01:15 +0000)
committerroot <root>
Tue, 3 Jan 2006 01:15:00 +0000 (01:15 +0000)
MANIFEST
src/perl/digital-clock
src/rxvtperl.xs
src/urxvt.pm

index b62bd57c1d8640d888c4c0b4cd33d27cfd40be28..dccdba2bd080a51baa30e2afddd500a2953dd1c5 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -126,6 +126,8 @@ src/rxvtperl.h
 src/rxvtperl.C
 
 src/perl/simple-overlay-clock
+src/perl/digital-clock
+src/perl/selection
 
 src/gentables
 src/gencompose
index 71809db8c7c0730397d4382cf4c8b42c7ff7c322..e9ace596daccab7cb36a854d29ff478441acbe04 100644 (file)
@@ -5,29 +5,32 @@
 sub on_init {
    my ($self) = @_;
 
+   # force a refresh every second
    $self->{digital_clock_refresh} = urxvt::timer
                     ->new
                     ->start (urxvt::NOW)
                     ->cb (sub {
-                       $self->{timer}->start ($self->{timer}->at + 1);
+                       $self->{digital_clock_refresh}->start ($self->{digital_clock_refresh}->at + 1);
                        $self->want_refresh;
                     });
 
    ()
 }
 
+# before refreshing: replace upper right with the clock display
 sub on_refresh_begin {
    my ($self) = @_;
 
    my $time = sprintf "%2d:%02d:%02d", (localtime urxvt::NOW)[2, 1, 0];
    my $xpos = $self->ncol - length $time;
 
-   $self->{digital_clock_rend} = $self->ROW_r (0, [(0x00020000 + urxvt::DEFAULT_RSTYLE) x length $time], $xpos);
+   $self->{digital_clock_rend} = $self->ROW_r (0, [(urxvt::DEFAULT_RSTYLE) x length $time], $xpos);
    $self->{digital_clock_text} = $self->ROW_t (0, $time, $xpos);
 
    ()
 }
 
+# after refreshing: restore previous screen contents
 sub on_refresh_end {
    my ($self) = @_;
 
index b1afcd339b33d548886d9b3a220db5cf3b459bca..1fdab62de7025912aa3aff86d256a59f3133719e 100644 (file)
@@ -316,6 +316,8 @@ BOOT:
   set_hookname (REFRESH_END);
   set_hookname (KEYBOARD_COMMAND);
 
+  newCONSTSUB (gv_stashpv ("urxvt", 1), "DEFAULT_RSTYLE", newSViv (DEFAULT_RSTYLE));
+
   sv_setpv (get_sv ("urxvt::LIBDIR", 1), LIBDIR);
 }
 
@@ -433,6 +435,11 @@ rxvt_term::ncol ()
         OUTPUT:
         RETVAL
 
+void
+rxvt_term::want_refresh ()
+       CODE:
+        THIS->want_refresh = 1;
+
 void
 rxvt_term::ROW_t (int row_number, SV *new_text = 0, int start_col = 0)
        PPCODE:
@@ -474,9 +481,11 @@ rxvt_term::ROW_t (int row_number, SV *new_text = 0, int start_col = 0)
 
             for (int col = start_col; col < start_col + len; col++)
               {
-                l.t [col] = wstr [col];
+                l.t [col] = wstr [col - start_col];
                 l.r [col] = SET_FONT (l.r [col], THIS->fontset [GET_STYLE (l.r [col])]->find_font (l.t [col]));
               }
+
+            free (wstr);
           }
 }
 
@@ -513,7 +522,7 @@ rxvt_term::ROW_r (int row_number, SV *new_rend = 0, int start_col = 0)
 
             for (int col = start_col; col < start_col + len; col++)
               {
-                rend_t r = SvIV (*av_fetch (av, col, 1)) & ~RS_fontMask;
+                rend_t r = SvIV (*av_fetch (av, col - start_col, 1)) & ~RS_fontMask;
 
                 l.r [col] = SET_FONT (r, THIS->fontset [GET_STYLE (r)]->find_font (l.t [col]));
               }
index c657bf43434b2c1215616cb87155a1774f2c34f5..5b46faf7cc9e42769cdaaf5d1e8d3e6d33f980f0 100644 (file)
@@ -412,6 +412,14 @@ Returns the negative row number of the topmost line. Minimum value is
 C<0>, which displays the normal terminal contents. Larger values scroll
 this many lines into the scrollback buffer.
 
+=item $term->want_refresh
+
+Requests a screen refresh. At the next opportunity, rxvt-unicode will
+compare the on-screen display with its stored representation. If they
+differ, it redraws the differences.
+
+Used after changing terminal contents to display them.
+
 =item $text = $term->ROW_t ($row_number[, $new_text[, $start_col]])
 
 Returns the text of the entire row with number C<$row_number>. Row C<0>