diff --git a/mitmproxy/tools/console/layoutwidget.py b/mitmproxy/tools/console/layoutwidget.py index 689be3c0d..27e270a0c 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 51f36c788..d021bf351 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 )