From f804495fd84a689bd397b0f4b1ccc2346385dbd9 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 11 Jun 2017 11:17:19 +1200 Subject: console: overlays shouldn't clear window titles --- mitmproxy/tools/console/layoutwidget.py | 2 ++ mitmproxy/tools/console/window.py | 16 +++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/mitmproxy/tools/console/layoutwidget.py b/mitmproxy/tools/console/layoutwidget.py index 689be3c0..27e270a0 100644 --- a/mitmproxy/tools/console/layoutwidget.py +++ b/mitmproxy/tools/console/layoutwidget.py @@ -5,6 +5,8 @@ class LayoutWidget: All top-level layout widgets and all widgets that may be set in an overlay must comply with this API. """ + # Title is only required for windows, not overlay components + title = None keyctx = "" def key_responder(self): diff --git a/mitmproxy/tools/console/window.py b/mitmproxy/tools/console/window.py index 51f36c78..d021bf35 100644 --- a/mitmproxy/tools/console/window.py +++ b/mitmproxy/tools/console/window.py @@ -135,24 +135,26 @@ class Window(urwid.Frame): if c == "single": self.pane = 0 - def wrap(w, idx): - if self.master.options.console_layout_headers and hasattr(w, "title"): - return Header(w, w.title, self.pane == idx) + def wrapped(idx): + window = self.stacks[idx].top_window() + widget = self.stacks[idx].top_widget() + if self.master.options.console_layout_headers and window.title: + return Header(widget, window.title, self.pane == idx) else: - return w + return widget w = None if c == "single": - w = wrap(self.stacks[0].top_widget(), 0) + w = wrapped(0) elif c == "vertical": w = urwid.Pile( [ - wrap(s.top_widget(), i) for i, s in enumerate(self.stacks) + wrapped(i) for i, s in enumerate(self.stacks) ] ) else: w = urwid.Columns( - [wrap(s.top_widget(), i) for i, s in enumerate(self.stacks)], + [wrapped(i) for i, s in enumerate(self.stacks)], dividechars=1 ) -- cgit v1.2.3