[1027] in BarnOwl Developers
[D-O-H] r1011 - branches/barnowl_sqlite/owl
daemon@ATHENA.MIT.EDU (nelhage@MIT.EDU)
Thu Oct 29 18:12:16 2009
Resent-From: nelhage@mit.edu
Resent-To: barnowl-dev-mtg@charon.mit.edu
X-Original-To: nelhage@nelhage.com
To: dirty-owl-hackers@MIT.EDU
From: nelhage@MIT.EDU
Reply-to: dirty-owl-hackers@MIT.EDU
Date: Wed, 2 Apr 2008 13:26:24 -0400 (EDT)
Author: nelhage
Date: 2008-04-02 13:26:24 -0400 (Wed, 02 Apr 2008)
New Revision: 1011
Modified:
branches/barnowl_sqlite/owl/perlwrap.pm
Log:
Make initialize_at_* only reset the view if necessary
Modified: branches/barnowl_sqlite/owl/perlwrap.pm
===================================================================
--- branches/barnowl_sqlite/owl/perlwrap.pm 2008-04-02 17:26:23 UTC (rev 1010)
+++ branches/barnowl_sqlite/owl/perlwrap.pm 2008-04-02 17:26:24 UTC (rev 1011)
@@ -557,16 +557,24 @@
my $self = shift;
my $view = shift;
$self->{view} = $view;
- $self->{index} = 0;
- $view->recalculate_around(0);
+ if($view->at_start) {
+ $self->{index} = -$view->offset;
+ } else {
+ $self->{index} = 0;
+ $view->recalculate_around(0);
+ }
}
sub initialize_at_end {
my $self = shift;
my $view = shift;
$self->{view} = $view;
- $self->{index} = 0;
- $view->recalculate_around(-1);
+ if($view->at_end) {
+ $self->{index} = (scalar @{$view->messages}) - 1 - $view->offset;
+ } else {
+ $self->{index} = 0;
+ $view->recalculate_around(-1);
+ }
}
sub initialize_at_id {
@@ -574,8 +582,14 @@
my $view = shift;
my $id = shift;
$self->{view} = $view;
- $self->{index} = 0;
- $view->recalculate_around($id);
+ if(scalar @{$view->messages} &&
+ $view->messages->[0] <= $id &&
+ $view->messages->[-1] >= $id) {
+ $self->{index} = BarnOwl::MessageList::binsearch($view->messages, $id) - $view->offset;
+ } else {
+ $self->{index} = 0;
+ $view->recalculate_around($id);
+ }
}
sub clone {