chiark / gitweb /
Properly indicate whether we can extend backwards.
authorSimon Tatham <anakin@pobox.com>
Fri, 8 Dec 2023 12:50:31 +0000 (12:50 +0000)
committerSimon Tatham <anakin@pobox.com>
Fri, 8 Dec 2023 12:50:57 +0000 (12:50 +0000)
client.py
cursesclient.py

index 2a58bdab7328be6e1089123062f2a02d2b908c50..6b171a4d517dc690b03ad7047b3224cfcc9120ed 100644 (file)
--- a/client.py
+++ b/client.py
@@ -187,6 +187,12 @@ class Feed:
     """
     def __init__(self, client):
         self.client = client
+    def can_extend(self):
+        return False
+    def extend_past(self):
+        return False
+    def extend_future(self):
+        return False
 
 class IncrementalServerFeed(Feed):
     """A Feed that fetches something from the server via get_incremental."""
@@ -214,6 +220,8 @@ class IncrementalServerFeed(Feed):
     def __getitem__(self, n):
         return self.data[n + self.origin]
 
+    def can_extend(self):
+        return True
     def extend_past(self):
         if not self.started:
             return None
@@ -267,11 +275,6 @@ class ThreadFeed(Feed):
     def __getitem__(self, n):
         return self.data[n]
 
-    def extend_past(self):
-        return False
-    def extend_future(self):
-        return False
-
 class EgoFeed(IncrementalServerFeed):
     def __init__(self, client):
         super().__init__(client, "notifications", {
index 946b618c3ca2a917d66ff7ce8c44f38326bc4461..5e7455f24bac446a23c58d27fa957ee14d70344f 100644 (file)
@@ -484,7 +484,7 @@ class ObjectFile(File):
         self.header = text.FileHeader(title)
         self.constructor = constructor
 
-        self.history_closed = False
+        self.history_closed = not self.feed.can_extend()
         self.minpos = self.feed.min_index()
         self.maxpos = self.feed.max_index()
         self.statuses = {i: self.constructor(self.feed[i], cc)
@@ -719,11 +719,12 @@ class ObjectFile(File):
 
     def up_screen(self):
         success = self.move_by(-max(1, self.cc.scr_h - 3))
-        if not success:
+        if not success and not self.history_closed:
             if not self.primed_to_extend:
                 self.primed_to_extend = True
             else:
-                self.feed.extend_past()
+                if self.feed.extend_past() is False: # None does not count
+                    self.history_closed = True
                 self.primed_to_extend = False
     def unprime(self):
         self.primed_to_extend = False