diff options
author | Maximilian Hils <git@maximilianhils.com> | 2017-12-14 14:38:32 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2017-12-14 14:59:07 +0100 |
commit | 079507e4b617a14a42151f3f685fce215394fadd (patch) | |
tree | 54ef7839d4bd752e9989cd3ac1c339cd15822f83 | |
parent | 62561ed428caca2fffaa96c8d0765a6a7bba4d00 (diff) | |
download | mitmproxy-079507e4b617a14a42151f3f685fce215394fadd.tar.gz mitmproxy-079507e4b617a14a42151f3f685fce215394fadd.tar.bz2 mitmproxy-079507e4b617a14a42151f3f685fce215394fadd.zip |
fix #2620
We previously had the problem that overriding keypress() skipped
the proper calculation of the top widget's size, leading to broken
scrolling behavior in the flowlist. We now always use urwid.Frame's
keypress method, but we make sure that urwid.Pile and urwid.Columns
delegate to the currently focused component.
-rw-r--r-- | mitmproxy/tools/console/window.py | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/mitmproxy/tools/console/window.py b/mitmproxy/tools/console/window.py index c6ff78f8..4cd53a42 100644 --- a/mitmproxy/tools/console/window.py +++ b/mitmproxy/tools/console/window.py @@ -156,12 +156,14 @@ class Window(urwid.Frame): w = urwid.Pile( [ wrapped(i) for i, s in enumerate(self.stacks) - ] + ], + focus_item=self.pane ) else: w = urwid.Columns( [wrapped(i) for i, s in enumerate(self.stacks)], - dividechars=1 + dividechars=1, + focus_column=self.pane ) self.body = urwid.AttrWrap(w, "background") @@ -270,13 +272,12 @@ class Window(urwid.Frame): return True def keypress(self, size, k): - if self.focus_part == "footer": - return super().keypress(size, k) - else: - fs = self.focus_stack().top_widget() - k = fs.keypress(size, k) - if k: - return self.master.keymap.handle(fs.keyctx, k) + k = super().keypress(size, k) + if k: + return self.master.keymap.handle( + self.focus_stack().top_widget().keyctx, + k + ) class Screen(urwid.raw_display.Screen): |