]> git.99rst.org Git - irssi-scripts.irssi.org.git/commitdiff
[trackbar] update to 2.8
authorAilin Nemui <redacted>
Wed, 8 May 2019 12:34:05 +0000 (14:34 +0200)
committerAilin Nemui <redacted>
Wed, 8 May 2019 12:34:05 +0000 (14:34 +0200)
- fix /^join bug

scripts/trackbar.pl

index 7e5b19b6e495e4070f007b0b15ffbe6c0090a6f1..0e71434b618a88828ce2b3dc06898af0b029f268 100644 (file)
@@ -102,7 +102,7 @@ use strict;
 use warnings;
 use vars qw($VERSION %IRSSI);
 
-$VERSION = "2.6"; # c99d17e529ad9ce
+$VERSION = "2.8"; # 89f27cc2c12368e
 
 %IRSSI = (
     authors     => "Peter 'kinlo' Leurs, Uwe Dudenhoeffer, " .
@@ -172,6 +172,7 @@ $VERSION = "2.6"; # c99d17e529ad9ce
 
 ## Version history:
 #
+#  2.8: - fix /^join bug
 #  2.7: - add /set trackbar_all_manual option
 #  2.5: - merge back on scripts.irssi.org
 #       - fix /trackbar redraw broken in 2.4
@@ -295,10 +296,22 @@ sub remove_one_trackbar {
     }
 }
 
-sub add_one_trackbar {
+sub add_one_trackbar_pt1 {
     my $win = shift;
     my $view = shift || $win->view;
+
+    my $last_cur_line = $view->{buffer}{cur_line}{_irssi};
     $win->print(line($win->{width}), MSGLEVEL_NEVER);
+
+    my $cur_line = $win->view->{buffer}{cur_line}{_irssi}; # get a fresh buffer
+
+    $last_cur_line ne $cur_line # printing was successful
+}
+
+sub add_one_trackbar_pt2 {
+    my $win = shift;
+    my $view = $win->view;
+
     $view->set_bookmark_bottom('trackbar');
     $unseen_trackbar{ $win->{_irssi} } = 1;
     Irssi::signal_emit("window trackbar added", $win);
@@ -310,10 +323,16 @@ sub update_one_trackbar {
     my $view = shift || $win->view;
     my $force = shift;
     my $ignored = win_ignored($win, $view);
-    remove_one_trackbar($win, $view)
-       if $force || !defined $force || !$ignored;
-    add_one_trackbar($win, $view)
+    my $success;
+
+    $success = add_one_trackbar_pt1($win, $view) ? 1 : 0
        if $force || !$ignored;
+
+    remove_one_trackbar($win, $view)
+       if ( $success || !defined $success ) && ( $force || !defined $force || !$ignored );
+
+    add_one_trackbar_pt2($win)
+       if $success;
 }
 
 sub win_ignored {
git clone https://git.99rst.org/PROJECT