From dd2e6af0746da88aea5103f1a9c68b3ed8dca658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 27 Nov 2009 10:40:04 +0100 Subject: [PATCH] Next and Previous scroll per page on list and don't loop --- CHANGELOG | 1 + tryton/gui/window/view_form/screen/screen.py | 26 +++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 4ea0b5de8e..40d42b7151 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Next and Previous scroll per page on list and don't loop * Add AccelGroup on search windows (CTRL+Return) * Use same keyboard shortcut for xxx2many than for other fields diff --git a/tryton/gui/window/view_form/screen/screen.py b/tryton/gui/window/view_form/screen/screen.py index 1291830928..8ce200de94 100644 --- a/tryton/gui/window/view_form/screen/screen.py +++ b/tryton/gui/window/view_form/screen/screen.py @@ -605,7 +605,17 @@ class Screen(SignalEvent): self.current_view.set_cursor(reset_view=False) if self.current_model in self.models.models: idx = self.models.models.index(self.current_model) - idx = (idx+1) % len(self.models.models) + inc = 1 + if self.current_view.view_type == 'tree': + start, end = self.current_view.widget_tree.get_visible_range() + inc += end[0] - start[0] + if inc >= 4 and (end[0] + 1) < len(self.models.models): + inc -= 3 + vadjustment = self.current_view.widget_tree.get_vadjustment() + vadjustment.value = vadjustment.value + vadjustment.page_increment + idx = idx + inc + if idx >= len(self.models.models): + idx = len(self.models.models) - 1 self.current_model = self.models.models[idx] else: self.current_model = len(self.models.models) \ @@ -619,9 +629,19 @@ class Screen(SignalEvent): self.current_view.set_value() self.current_view.set_cursor(reset_view=False) if self.current_model in self.models.models: - idx = self.models.models.index(self.current_model)-1 + inc = 1 + if self.current_view.view_type == 'tree': + start, end = self.current_view.widget_tree.get_visible_range() + inc += end[0] - start[0] + if inc >= 4 and start[0] > 0: + inc -= 3 + vadjustment = self.current_view.widget_tree.get_vadjustment() + if vadjustment.value: + vadjustment.value = vadjustment.value - \ + vadjustment.page_increment + idx = self.models.models.index(self.current_model) - inc if idx < 0: - idx = len(self.models.models)-1 + idx = 0 self.current_model = self.models.models[idx] else: self.current_model = len(self.models.models) \