Merge pull request #2755 from mhils/fix-unfocused-pane-click

fix #2738
This commit is contained in:
Maximilian Hils 2018-01-04 16:36:23 +01:00 committed by GitHub
commit d982dd98a0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -234,28 +234,34 @@ class Window(urwid.Frame):
self.view_changed()
self.focus_changed()
def stacks_sorted_by_focus(self):
"""
Returns:
self.stacks, with the focused stack first.
"""
stacks = self.stacks.copy()
stacks.insert(0, stacks.pop(self.pane))
return stacks
def current(self, keyctx):
"""
Returns the active widget, but only the current focus or overlay has
a matching key context.
Returns the active widget with a matching key context, including overlays.
If multiple stacks have an active widget with a matching key context,
the currently focused stack is preferred.
"""
t = self.focus_stack().top_widget()
for s in self.stacks_sorted_by_focus():
t = s.top_widget()
if t.keyctx == keyctx:
return t
def current_window(self, keyctx):
"""
Returns the active window, ignoring overlays.
Returns the active window with a matching key context, ignoring overlays.
If multiple stacks have an active widget with a matching key context,
the currently focused stack is preferred.
"""
t = self.focus_stack().top_window()
if t.keyctx == keyctx:
return t
def any(self, keyctx):
"""
Returns the top window of either stack if they match the context.
"""
for t in [x.top_window() for x in self.stacks]:
for s in self.stacks_sorted_by_focus():
t = s.top_window()
if t.keyctx == keyctx:
return t