diff options
| author | Tom Feist <shabble@metavore.org> | 2010-12-02 10:48:26 +0000 | 
|---|---|---|
| committer | Tom Feist <shabble@metavore.org> | 2010-12-02 10:48:26 +0000 | 
| commit | d65fdd6056d05dec68d526e477dc1a5b030c926a (patch) | |
| tree | 45de93c77cb4078fe3b571ab4dc6d114c207f191 | |
| parent | sb_position: /sb commands now work and cause the update as expected (diff) | |
| download | irssi-scripts-d65fdd6056d05dec68d526e477dc1a5b030c926a.tar.gz irssi-scripts-d65fdd6056d05dec68d526e477dc1a5b030c926a.zip | |
sb_position: account for empty_linecount to fix incorrect position on /clear,
add use TextUI.
| -rw-r--r-- | sb-position/sb_position.pl | 22 | 
1 files changed, 16 insertions, 6 deletions
| diff --git a/sb-position/sb_position.pl b/sb-position/sb_position.pl index 744229f..5fb9654 100644 --- a/sb-position/sb_position.pl +++ b/sb-position/sb_position.pl @@ -21,6 +21,7 @@ use strict;  use warnings;  use Irssi; +use Irssi::TextUI;  use POSIX qw(ceil);  { package Irssi::Nick } @@ -35,8 +36,8 @@ our %IRSSI = (      changed     => '2010-12-02'  ); -my ($buf, $size, $pos, $height); -my ($pages, $cur_page, $buf_percent); +my ($buf, $size, $pos, $height, $empty); +my ($pages, $cur_page, $buf_pos_cache);  init(); @@ -76,10 +77,18 @@ sub update_position {      $height = $view->{height};      $size   = $buf->{lines_count}; -    $pages    = ceil($size / $height); -    $pages    = 1 unless $pages; +    $empty  = $view->{empty_linecount}; +    $empty  = 0 unless $empty; -    $cur_page = ceil(($size - $pos + $height -1) / $height); +    # $size -= $empty; + +    $pages = ceil($size / $height); +    $pages = 1 unless $pages; + +    $pos   = $pos < 0 ? 0 : $pos; + +    $buf_pos_cache = $size - $pos + ($height - $empty) - 1; +    $cur_page      = ceil($buf_pos_cache / $height);      Irssi::statusbar_items_redraw('position');  } @@ -91,11 +100,12 @@ sub position_statusbar {      if ($size < $height) {          $percent = 100;      } else { -        $percent = ceil(($size - $pos - 1 + $height) / $size * 100); +        $percent = ceil($buf_pos_cache / $size * 100);      }      # Alternate view.      #my $sb = "p=$pos, s=$size, h=$height, pp:$cur_page/$pages $percent%%";      my $sb = "Page: $cur_page/$pages $percent%%"; +      $statusbar_item->default_handler($get_size_only, "{sb $sb}", 0, 1);  } | 
