Bugs with console fixed. (#2746)

Clicking on a tab now focuses it. Fixes #2676.
This commit is contained in:
Samoilenko Roman 2018-01-04 18:02:39 +02:00 committed by Maximilian Hils
parent d982dd98a0
commit 133dd1743d

View File

@ -16,7 +16,10 @@ from mitmproxy.tools.console import eventlog
class StackWidget(urwid.Frame): class StackWidget(urwid.Frame):
def __init__(self, widget, title, focus): def __init__(self, window, widget, title, focus):
self.is_focused = focus
self.window = window
if title: if title:
header = urwid.AttrWrap( header = urwid.AttrWrap(
urwid.Text(title), urwid.Text(title),
@ -29,6 +32,11 @@ class StackWidget(urwid.Frame):
header=header header=header
) )
def mouse_event(self, size, event, button, col, row, focus):
if event == "mouse press" and button == 1 and not self.is_focused:
self.window.switch()
return super().mouse_event(size, event, button, col, row, focus)
def keypress(self, size, key): def keypress(self, size, key):
# Make sure that we don't propagate cursor events outside of the widget. # Make sure that we don't propagate cursor events outside of the widget.
# Otherwise, in a horizontal layout, urwid's Pile would change the focused widget # Otherwise, in a horizontal layout, urwid's Pile would change the focused widget
@ -162,6 +170,7 @@ class Window(urwid.Frame):
else: else:
title = None title = None
return StackWidget( return StackWidget(
self,
widget, widget,
title, title,
self.pane == idx self.pane == idx