[1027] in BarnOwl Developers

home help back first fref pref prev next nref lref last post

[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 {


home help back first fref pref prev next nref lref last post