Browse Source

fix keypress not working on inherited class

Daniel Sheffield 1 year ago
parent
commit
d6dda2ba3d
2 changed files with 11 additions and 8 deletions
  1. 8 5
      app/activities/RecipeEditor.py
  2. 3 3
      app/widgets.py

+ 8 - 5
app/activities/RecipeEditor.py

@@ -123,6 +123,8 @@ class RecipeEditor(FocusWidget):
 
         if getattr(self._w.original_widget, 'original_widget', None) is None:
             return super().keypress(size, key)
+        _c = self.container.get_focus_path()
+        _p = next((w[1] for w,p in self.iter_focus_paths() if p == _c))
 
         if key == 'tab':
             self.advance_focus()
@@ -133,7 +135,9 @@ class RecipeEditor(FocusWidget):
         elif key == 'ctrl w':
             self.save()
         else:
-            return super().keypress(size, key)
+            if _p.keypress((size[0],) if getattr(_p, 'contents', None) is None else size, key):
+                return super().keypress(size, key)
+            return
 
     def apply_choice(self, name, value):
         self.apply_changes(name, value)
@@ -437,7 +441,7 @@ class RecipeEditor(FocusWidget):
                 FloatEdit(('bg', f''), default=ingredient[1]),
                 AutoCompleteEdit(('bg', f'unit#{idx}'), edit_text=ingredient[2]),
             ) for idx, ingredient in enumerate(recipe['ingredients'])
-        ] if len(recipe['ingredients']) else [ ]
+        ]
 
         self.organic = NoTabCheckBox(('bg', "Organic"), state='mixed')
         self.instructions = Edit('', edit_text=recipe['instructions'] or u'', multiline=True, allow_tab=True)
@@ -473,10 +477,9 @@ class RecipeEditor(FocusWidget):
             Padding(_copyright, 'center', width=('relative', 100)),
         ])
         banner = AttrMap(banner, 'banner')
-
+        
         left_pane, middle_pane, right_pane, gutter = self.init_ingredients()
 
-
         self.components = {
             'top_pane': Columns([
                 (9, Pile([
@@ -501,7 +504,6 @@ class RecipeEditor(FocusWidget):
             'left_pane': (12, left_pane),
             'gutter': (8, gutter)
         }
-        self.add_ingredient()
 
         widget = Pile([
             banner,
@@ -534,4 +536,5 @@ class RecipeEditor(FocusWidget):
                 ],
             )
         )
+        self.add_ingredient()
         self.update()

+ 3 - 3
app/widgets.py

@@ -37,10 +37,10 @@ class AutoCompleteEdit(urwid.Edit):
             self.set_edit_text('')
             return
 
-        return super().keypress(size, key)
+        return urwid.Edit.keypress(self, (size[0],), key)
 
 class AutoCompleteFloatEdit(numedit.FloatEdit):
-    signals = [ *urwid.Edit.signals, 'apply', 'open' ]
+    signals = [ *numedit.FloatEdit.signals, 'apply', 'open' ]
 
     def __init__(self, name: str, *args: Iterable, **kwargs: dict):
         self.last_val = None
@@ -117,7 +117,7 @@ class AutoCompleteFloatEdit(numedit.FloatEdit):
             self.update_caption()
             return
 
-        return super().keypress(size, key)
+        return numedit.FloatEdit.keypress(self, (size[0],), key)
 
 class NoTabCheckBox(urwid.CheckBox):
     def keypress(self, size, key):