Partially prevent focus grabbing by terminals leaving a Paned where they had no focus to begin with. This is useful where terminals are exiting for reasons other than direct user intervention. LP#943311

This commit is contained in:
Chris Jones 2012-10-18 16:23:25 -07:00
parent 11887770e1
commit eda8d3fc22

View File

@ -111,7 +111,10 @@ class Paned(Container):
handler = handler[0]
self.connect_child(widget, signal, handler, *args)
widget.grab_focus()
if metadata and \
metadata.has_key('had_focus') and \
metadata['had_focus'] == True:
widget.grab_focus()
elif isinstance(widget, gtk.Paned):
try:
@ -220,9 +223,15 @@ class Paned(Container):
children.append(self.get_child2())
return(children)
def get_child_metadata(self, widget):
"""Return metadata about a child"""
metadata = {}
metadata['had_focus'] = widget.has_focus()
def wrapcloseterm(self, widget):
"""A child terminal has closed, so this container must die"""
dbg('Paned::wrapcloseterm: Called on %s' % widget)
if self.closeterm(widget):
# At this point we only have one child, which is the surviving term
sibling = self.children[0]
@ -235,7 +244,6 @@ class Paned(Container):
parent.remove(self)
self.cnxids.remove_all()
parent.add(sibling, metadata)
sibling.grab_focus()
del(self)
else:
dbg("Paned::wrapcloseterm: self.closeterm failed")