Переглянути джерело

fix focus skipping product field due to container stealing focus

Daniel Sheffield 3 роки тому
батько
коміт
42d4c1c7f4
2 змінених файлів з 9 додано та 4 видалено
  1. 2 1
      app/activities/TransactionEditor.py
  2. 7 3
      app/widgets.py

+ 2 - 1
app/activities/TransactionEditor.py

@@ -163,7 +163,8 @@ class TransactionEditor(FocusWidget):
         ])
         widget = urwid.Filler(widget, 'top') 
         widget = urwid.AttrMap(widget, 'bg')
-        super().__init__(widget, [2,0,0,0], [
+        super().__init__(widget, [2,0,0,0,0], [
+            [2, 0, 1, 0],
             [4,],
             [5,],
             [7,],

+ 7 - 3
app/widgets.py

@@ -162,8 +162,10 @@ class FocusWidget(urwid.WidgetPlaceholder):
             yield path
             self.advance_focus()
             path = self.container.get_focus_path()
+            while len(path) < len(self.initial_focus):
+                path.extend([0])
             if path == self.initial_focus:
-                break
+                return
 
     def advance_focus(self, reverse=False):
 
@@ -198,8 +200,10 @@ class FocusWidget(urwid.WidgetPlaceholder):
                 return
             except IndexError:
                 path[idx] = 0
-            
-        self.container.set_focus_path(self.initial_focus)
+                while len(path) < len(self.initial_focus):
+                    path.extend([0])
+
+        self._set_focus_path(self.initial_focus)
 
 class SuggestionPopup(urwid.Overlay):