Fixed paste bug. github#11

This commit is contained in:
Graeme Humphries 2012-04-17 11:23:52 -07:00
parent 24112ed67b
commit eb7ebdfa01

View File

@ -132,6 +132,7 @@ class CruSSH:
ScrollWin = gtk.ScrolledWindow() ScrollWin = gtk.ScrolledWindow()
LayoutTable = gtk.Table() LayoutTable = gtk.Table()
EntryBox = gtk.Entry() EntryBox = gtk.Entry()
Clipboard = gtk.Clipboard()
### Methods ### ### Methods ###
def reflowTable(self, cols=1, rows=1): def reflowTable(self, cols=1, rows=1):
@ -251,8 +252,6 @@ class CruSSH:
# forward key events to all terminals # forward key events to all terminals
def feed_input(widget, event): def feed_input(widget, event):
if event.type in [gtk.gdk.KEY_PRESS, gtk.gdk.KEY_RELEASE]:
# erase buffer on every entry, so that passwords aren't revealed
self.EntryBox.props.buffer.delete_text(0, -1) self.EntryBox.props.buffer.delete_text(0, -1)
# propagate to every terminal # propagate to every terminal
for host in self.Terminals: for host in self.Terminals:
@ -260,8 +259,14 @@ class CruSSH:
self.Terminals[host].event(t_event) self.Terminals[host].event(t_event)
# this stops regular handler from firing, switching focus. # this stops regular handler from firing, switching focus.
return True return True
def feed_paste(widget):
for host in self.Terminals:
self.Terminals[host].feed_child(self.Clipboard.wait_for_text())
self.EntryBox.props.buffer.delete_text(0, -1)
self.EntryBox.connect("key_press_event", feed_input) self.EntryBox.connect("key_press_event", feed_input)
self.EntryBox.connect("key_release_event", feed_input) self.EntryBox.connect("key_release_event", feed_input)
self.EntryBox.connect("paste_clipboard", feed_paste)
MainVBox.pack_start(self.EntryBox, False, False) MainVBox.pack_start(self.EntryBox, False, False)
# reflow layout on size change. # reflow layout on size change.