From: root Date: Tue, 3 Jan 2006 01:15:00 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=897857da741effa8b959562b47f7c35ef9d3418b;p=dana%2Furxvt.git *** empty log message *** --- diff --git a/MANIFEST b/MANIFEST index b62bd57c..dccdba2b 100644 --- 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 diff --git a/src/perl/digital-clock b/src/perl/digital-clock index 71809db8..e9ace596 100644 --- a/src/perl/digital-clock +++ b/src/perl/digital-clock @@ -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) = @_; diff --git a/src/rxvtperl.xs b/src/rxvtperl.xs index b1afcd33..1fdab62d 100644 --- a/src/rxvtperl.xs +++ b/src/rxvtperl.xs @@ -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])); } diff --git a/src/urxvt.pm b/src/urxvt.pm index c657bf43..5b46faf7 100644 --- a/src/urxvt.pm +++ b/src/urxvt.pm @@ -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>