参考:http://www.taika.org/~tomba/gnome-terminal/index.html
- sudo apt-get build-dep gnome-terminal
- mkdir gnome-terminal
cd gnome-terminal
apt-get source gnome-terminal
cd gnome-terminal-2.32.1 - 合并git库中src/terminal-screen.c中关于copy/paste部分的代码
- dpkg-buildpackage -us -uc -b
cd ..
dpkg -i *.deb
- Ubuntu 16.04 gnome-terminal-3.18.3
diff --git a/src/terminal-screen.c b/src/terminal-screen.c
index f9efbea..9712c5a 100644
--- a/src/terminal-screen.c
+++ b/src/terminal-screen.c
@@ -140,6 +140,8 @@ static void terminal_screen_system_font_changed_cb (GSettings *,
static gboolean terminal_screen_popup_menu (GtkWidget *widget);
static gboolean terminal_screen_button_press (GtkWidget *widget,
GdkEventButton *event);
+static gboolean terminal_screen_button_release (GtkWidget *widget,
+ GdkEventButton *event);
static void terminal_screen_hierarchy_changed (GtkWidget *widget,
GtkWidget *previous_toplevel);
static gboolean terminal_screen_do_exec (TerminalScreen *screen,
@@ -527,6 +529,7 @@ terminal_screen_class_init (TerminalScreenClass *klass)
widget_class->style_updated = terminal_screen_style_updated;
widget_class->drag_data_received = terminal_screen_drag_data_received;
widget_class->button_press_event = terminal_screen_button_press;
+ widget_class->button_release_event = terminal_screen_button_release;
widget_class->popup_menu = terminal_screen_popup_menu;
widget_class->hierarchy_changed = terminal_screen_hierarchy_changed;
@@ -1683,13 +1686,7 @@ terminal_screen_button_press (GtkWidget *widget,
{
if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)))
{
- /* on right-click, we should first try to send the mouse event to
- * the client, and popup only if that's not handled. */
- if (button_press_event && button_press_event (widget, event))
- return TRUE;
-
- terminal_screen_do_popup (screen, event, matched_string, matched_flavor);
- matched_string = NULL; /* adopted to the popup info */
+ vte_terminal_paste_clipboard (VTE_TERMINAL (screen));
return TRUE;
}
else if (!(event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK)))
@@ -1708,6 +1705,33 @@ terminal_screen_button_press (GtkWidget *widget,
return FALSE;
}
+static gboolean
+terminal_screen_button_release (GtkWidget *widget,
+ GdkEventButton *event)
+{
+ gboolean ret;
+
+ TerminalScreen *screen = TERMINAL_SCREEN (widget);
+ gboolean (* button_release_event) (GtkWidget*, GdkEventButton*) =
+ GTK_WIDGET_CLASS (terminal_screen_parent_class)->button_release_event;
+
+ ret = FALSE;
+ if (button_release_event) {
+ ret = button_release_event (widget, event);
+ }
+
+ if (event->button == 1) {
+ gboolean can_copy;
+
+ can_copy = vte_terminal_get_has_selection (VTE_TERMINAL (screen));
+
+ if (can_copy)
+ vte_terminal_copy_clipboard (VTE_TERMINAL (screen));
+ }
+
+ return ret;
+}
+
/**
* terminal_screen_get_current_dir:
* @screen:
本文介绍了如何在Ubuntu系统中为gnome-terminal添加选择复制和右键粘贴功能,通过安装源码包并进行特定代码合并来实现。
6209

被折叠的 条评论
为什么被折叠?



