[gedit-plugins] Fix Ctrl+D in terminal plugin



commit 58025fadf1b4ae5bfae433e31f8ae68f011ef209
Author: Garrett Regier <garrettregier gmail com>
Date:   Sat Jun 29 15:38:11 2013 -0700

    Fix Ctrl+D in terminal plugin

 plugins/terminal/terminal.py |   38 ++++++++++++++++++++++----------------
 1 files changed, 22 insertions(+), 16 deletions(-)
---
diff --git a/plugins/terminal/terminal.py b/plugins/terminal/terminal.py
index f655cb6..50322a3 100644
--- a/plugins/terminal/terminal.py
+++ b/plugins/terminal/terminal.py
@@ -66,11 +66,6 @@ class GeditTerminal(Vte.Terminal):
 
         self.fork_command_full(Vte.PtyFlags.DEFAULT, None, [Vte.get_user_shell()], None, 
GLib.SpawnFlags.SEARCH_PATH, None, None)
 
-    def do_child_exited(self):
-        Vte.Terminal.do_child_exited(self)
-
-        self._vte.fork_command_full(Vte.PtyFlags.DEFAULT, None, [Vte.get_user_shell()], None, 
GLib.SpawnFlags.SEARCH_PATH, None, None)
-
     def do_drag_data_received(self, drag_context, x, y, data, info, time):
         if info == self.TARGET_URI_LIST:
             self.feed_child(' '.join(["'" + Gio.file_new_for_uri(item).get_path() + "'" for item in 
Gedit.utils_drop_get_uris(data)]), -1)
@@ -179,10 +174,27 @@ class GeditTerminalPanel(Gtk.Box):
     def __init__(self):
         Gtk.Box.__init__(self)
 
+        self._accel_base = '<gedit>/plugins/terminal'
+        self._accels = {
+            'copy-clipboard': [Gdk.KEY_C, Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK, 
self.copy_clipboard],
+            'paste-clipboard': [Gdk.KEY_V, Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK, 
self.paste_clipboard]
+        }
+
+        for name in self._accels:
+            path = self._accel_base + '/' + name
+            accel = Gtk.AccelMap.lookup_entry(path)
+
+            if not accel[0]:
+                 Gtk.AccelMap.add_entry(path, self._accels[name][0], self._accels[name][1])
+
+        self.add_terminal()
+
+    def add_terminal(self):
         self._vte = GeditTerminal()
         self._vte.show()
         self.pack_start(self._vte, True, True, 0)
 
+        self._vte.connect("child-exited", self.on_vte_child_exited)
         self._vte.connect("key-press-event", self.on_vte_key_press)
         self._vte.connect("button-press-event", self.on_vte_button_press)
         self._vte.connect("popup-menu", self.on_vte_popup_menu)
@@ -191,18 +203,12 @@ class GeditTerminalPanel(Gtk.Box):
         scrollbar.show()
         self.pack_start(scrollbar, False, False, 0)
 
-        self._accel_base = '<gedit>/plugins/terminal'
-        self._accels = {
-            'copy-clipboard': [Gdk.KEY_C, Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK, 
self.copy_clipboard],
-            'paste-clipboard': [Gdk.KEY_V, Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK, 
self.paste_clipboard]
-        }
-
-        for name in self._accels:
-            path = self._accel_base + '/' + name
-            accel = Gtk.AccelMap.lookup_entry(path)
+    def on_vte_child_exited(self, term):
+        for child in self.get_children():
+            child.destroy()
 
-            if not accel[0]:
-                 Gtk.AccelMap.add_entry(path, self._accels[name][0], self._accels[name][1])
+        self.add_terminal()
+        self._vte.grab_focus()
 
     def do_grab_focus(self):
         self._vte.grab_focus()


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]