>>No.64830106 好消息,我试着做了一个滚动功能,实测能用 (=゚ω゚)=
diff --git a/xdnmb/globals.py b/xdnmb/globals.py
index f7abaf1..d91f709 100644
--- a/xdnmb/globals.py
+++ b/xdnmb/globals.py
@@ -626,7 +626,13 @@ def titleControlContainer() -> Container:
titleControl = DynamicContainer(titleControlContainer)
forumGroupControl = ScrollablePane(DynamicContainer(forumGroupControlContainer))
-forumContentControl = ScrollablePane(DynamicContainer(forumContentControlContainer))
+visual_mode = False
+visible_filter = Condition(lambda: not visual_mode)
+forumContentControl = ScrollablePane(
+ DynamicContainer(forumContentControlContainer),
+ keep_cursor_visible=visible_filter,
+ keep_focused_window_visible=visible_filter,
+)
container = FloatContainer(
HSplit((
@@ -680,13 +686,38 @@ condition = Condition(lambda: not (len(container.floats) > 1 or showReplyForm))
@keyBinding.add('up', filter=condition)
@keyBinding.add('k', filter=condition)
def _(e):
+ global visual_mode
+ visual_mode = False
focus_previous(e)
@keyBinding.add('down', filter=condition)
@keyBinding.add('j', filter=condition)
def _(e):
+ global visual_mode
+ visual_mode = False
focus_next(e)
+
+@(keyBinding.add("c-j") if is_mac else keyBinding.add("escape", "j"))
+def _(e: KeyPressEvent):
+ global thread
+ if not thread or len(container.floats) > 1 or showReplyForm:
+ return
+ global visual_mode
+ visual_mode = True
+ forumContentControl.vertical_scroll += 1
+
+
+@(keyBinding.add("c-u") if is_mac else keyBinding.add("escape", "u"))
+def _(e: KeyPressEvent):
+ global thread
+ if not thread or len(container.floats) > 1 or showReplyForm:
+ return
+ global visual_mode
+ visual_mode = True
+ forumContentControl.vertical_scroll -= 1
+
+
@ (keyBinding.add('c-e') if is_mac else keyBinding.add('escape', 'e'))
def _(e):
LRU_CACHE_DB.close(),