init package
This commit is contained in:
parent
adcb8bcc85
commit
3b38168cb0
22
vte-0.28.2-683730.patch
Normal file
22
vte-0.28.2-683730.patch
Normal file
@ -0,0 +1,22 @@
|
||||
--- o/src/vte.c 2018-05-03 20:53:16.000000000 +0200
|
||||
+++ n/src/vte.c 2018-05-03 20:57:48.764010197 +0200
|
||||
@@ -7513,17 +7513,10 @@
|
||||
event->button, x, y);
|
||||
switch (event->button) {
|
||||
case 1:
|
||||
- /* If Shift is held down, or we're not in events mode,
|
||||
- * copy the selected text. */
|
||||
- if ((terminal->pvt->modifiers & GDK_SHIFT_MASK) ||
|
||||
- !terminal->pvt->mouse_tracking_mode)
|
||||
- handled = _vte_terminal_maybe_end_selection (terminal);
|
||||
+ handled = _vte_terminal_maybe_end_selection (terminal);
|
||||
break;
|
||||
case 2:
|
||||
- if ((terminal->pvt->modifiers & GDK_SHIFT_MASK) ||
|
||||
- !terminal->pvt->mouse_tracking_mode) {
|
||||
- handled = TRUE;
|
||||
- }
|
||||
+ handled = TRUE;
|
||||
break;
|
||||
case 3:
|
||||
default:
|
||||
68
vte-0.28.2-control.patch
Normal file
68
vte-0.28.2-control.patch
Normal file
@ -0,0 +1,68 @@
|
||||
--- a/src/keymap.c
|
||||
+++ a/src/keymap.c
|
||||
@@ -286,6 +286,8 @@ static const struct _vte_keymap_entry _vte_keymap_GDK_Home[] = {
|
||||
{cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "1~", -1, X_NULL},
|
||||
{cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "h", -1, X_NULL},
|
||||
{cursor_all, keypad_all, fkey_nothpvt, 0, X_NULL, 0, "kh"},
|
||||
+ {cursor_default, keypad_all, fkey_default, 0, _VTE_CAP_CSI "H", -1, X_NULL},
|
||||
+ {cursor_app, keypad_all, fkey_default, 0, _VTE_CAP_SS3 "H", -1, X_NULL},
|
||||
{cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
|
||||
};
|
||||
|
||||
@@ -293,6 +295,8 @@ static const struct _vte_keymap_entry _vte_keymap_GDK_End[] = {
|
||||
{cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "@7"},
|
||||
{cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "4~", -1, X_NULL},
|
||||
{cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "@7"},
|
||||
+ {cursor_default, keypad_all, fkey_default, 0, _VTE_CAP_CSI "F", -1, X_NULL},
|
||||
+ {cursor_app, keypad_all, fkey_default, 0, _VTE_CAP_SS3 "F", -1, X_NULL},
|
||||
{cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
|
||||
};
|
||||
|
||||
@@ -504,10 +508,11 @@ static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Insert[] = {
|
||||
|
||||
static const struct _vte_keymap_entry _vte_keymap_GDK_KP_End[] = {
|
||||
{cursor_all, keypad_default, fkey_all, 0, X_NULL, 0, "K4"},
|
||||
- {cursor_all, keypad_default, fkey_notvt220,
|
||||
- 0, _VTE_CAP_CSI "4~", -1, X_NULL},
|
||||
+ {cursor_default, keypad_default, fkey_notvt220, 0, _VTE_CAP_CSI "F", -1, X_NULL},
|
||||
+ {cursor_app, keypad_default, fkey_notvt220, 0, _VTE_CAP_SS3 "F", -1, X_NULL},
|
||||
{cursor_all, keypad_default, fkey_vt220, 0, "1", 1, X_NULL},
|
||||
- {cursor_all, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "4~", -1, X_NULL},
|
||||
+ {cursor_default, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "F", -1, X_NULL},
|
||||
+ {cursor_app, keypad_app, fkey_notvt220, 0, _VTE_CAP_SS3 "F", -1, X_NULL},
|
||||
{cursor_all, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "q", -1, X_NULL},
|
||||
{cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
|
||||
};
|
||||
@@ -565,10 +570,11 @@ static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Right[] = {
|
||||
|
||||
static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Home[] = {
|
||||
{cursor_all, keypad_default, fkey_all, 0, X_NULL, 0, "K1"},
|
||||
- {cursor_all, keypad_default, fkey_notvt220,
|
||||
- 0, _VTE_CAP_CSI "1~", -1, X_NULL},
|
||||
+ {cursor_default, keypad_default, fkey_notvt220, 0, _VTE_CAP_CSI "H", -1, X_NULL},
|
||||
+ {cursor_app, keypad_default, fkey_notvt220, 0, _VTE_CAP_SS3 "H", -1, X_NULL},
|
||||
{cursor_all, keypad_default, fkey_vt220, 0, "7", 1, X_NULL},
|
||||
- {cursor_all, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "1~", -1, X_NULL},
|
||||
+ {cursor_default, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "H", -1, X_NULL},
|
||||
+ {cursor_app, keypad_app, fkey_notvt220, 0, _VTE_CAP_SS3 "H", -1, X_NULL},
|
||||
{cursor_all, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "w", -1, X_NULL},
|
||||
{cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
|
||||
};
|
||||
@@ -1280,6 +1286,8 @@ _vte_keymap_key_gets_modifiers(guint keyval)
|
||||
case GDK_KEY (Right):
|
||||
case GDK_KEY (Insert):
|
||||
case GDK_KEY (Delete):
|
||||
+ case GDK_KEY (Home):
|
||||
+ case GDK_KEY (End):
|
||||
case GDK_KEY (Page_Up):
|
||||
case GDK_KEY (Page_Down):
|
||||
case GDK_KEY (KP_Up):
|
||||
@@ -1288,6 +1296,8 @@ _vte_keymap_key_gets_modifiers(guint keyval)
|
||||
case GDK_KEY (KP_Right):
|
||||
case GDK_KEY (KP_Insert):
|
||||
case GDK_KEY (KP_Delete):
|
||||
+ case GDK_KEY (KP_Home):
|
||||
+ case GDK_KEY (KP_End):
|
||||
case GDK_KEY (KP_Page_Up):
|
||||
case GDK_KEY (KP_Page_Down):
|
||||
case GDK_KEY (F1):
|
||||
84
vte-0.28.2-introspection-fixes.patch
Normal file
84
vte-0.28.2-introspection-fixes.patch
Normal file
@ -0,0 +1,84 @@
|
||||
commit 8cff105a2b280ed738b296955724590b9cd348ce
|
||||
commit ef34977b6765be1036ea8cd016861199033e2231
|
||||
commit 49e3433dea9a32d7ab9972b719484b49ca7f6b81
|
||||
commit 94b6ca416d4e5b54be084a057ec1341bcfddabe1
|
||||
commit ecb9fcc8cfb73207bcda93889e3e2564d41f79c9
|
||||
|
||||
--- origsrc/vte-0.28.2/src/pty.c 2011-08-16 16:52:48.000000000 -0500
|
||||
+++ src/vte-0.28.2/src/pty.c 2015-08-03 14:01:55.151226800 -0500
|
||||
@@ -616,7 +616,7 @@ __vte_pty_fork(VtePty *pty,
|
||||
* @pty: a #VtePty
|
||||
* @rows: the desired number of rows
|
||||
* @columns: the desired number of columns
|
||||
- * @error: (allow-none); return location to store a #GError, or %NULL
|
||||
+ * @error: (allow-none): return location to store a #GError, or %NULL
|
||||
*
|
||||
* Attempts to resize the pseudo terminal's window size. If successful, the
|
||||
* OS kernel will send #SIGWINCH to the child process group.
|
||||
--- origsrc/vte-0.28.2/src/vte.c 2015-08-03 13:56:24.348720200 -0500
|
||||
+++ src/vte-0.28.2/src/vte.c 2015-08-03 16:15:52.185800500 -0500
|
||||
@@ -2474,7 +2474,7 @@ _vte_terminal_set_pointer_visible(VteTer
|
||||
*
|
||||
* Creates a new terminal widget.
|
||||
*
|
||||
- * Returns: (transfer full) (type Vte.Terminal): a new #VteTerminal object
|
||||
+ * Returns: (transfer none) (type Vte.Terminal): a new #VteTerminal object
|
||||
*/
|
||||
GtkWidget *
|
||||
vte_terminal_new(void)
|
||||
@@ -3680,7 +3680,7 @@ vte_terminal_watch_child (VteTerminal *t
|
||||
* Gets the user's shell, or %NULL. In the latter case, the
|
||||
* system default (usually "/bin/sh") should be used.
|
||||
*
|
||||
- * Returns: (tranfer full) (type filename): a newly allocated string with the
|
||||
+ * Returns: (transfer full) (type filename): a newly allocated string with the
|
||||
* user's shell, or %NULL
|
||||
*
|
||||
* Since: 0.28
|
||||
@@ -4615,8 +4615,8 @@ out:
|
||||
/**
|
||||
* vte_terminal_feed:
|
||||
* @terminal: a #VteTerminal
|
||||
- * @data: a string in the terminal's current encoding
|
||||
- * @length: the length of the string
|
||||
+ * @data: (array length=length) (element-type guint8): a string in the terminal's current encoding
|
||||
+ * @length the length of the string
|
||||
*
|
||||
* Interprets @data as if it were data received from a child process. This
|
||||
* can either be used to drive the terminal without a child process, or just
|
||||
@@ -6233,7 +6233,7 @@ vte_terminal_copy_cb(GtkClipboard *clipb
|
||||
* @start_col: first column to search for data
|
||||
* @end_row: last row to search for data
|
||||
* @end_col: last column to search for data
|
||||
- * @is_selected: a #VteSelectionFunc callback
|
||||
+ * @is_selected: (scope call): a #VteSelectionFunc callback
|
||||
* @user_data: (closure): user data to be passed to the callback
|
||||
* @attributes: (out) (transfer full) (array) (element-type Vte.CharAttributes): location for storing text attributes
|
||||
*
|
||||
@@ -6432,7 +6432,7 @@ vte_terminal_get_text_maybe_wrapped(VteT
|
||||
/**
|
||||
* vte_terminal_get_text:
|
||||
* @terminal: a #VteTerminal
|
||||
- * @is_selected: a #VteSelectionFunc callback
|
||||
+ * @is_selected: (scope call): a #VteSelectionFunc callback
|
||||
* @user_data: (closure): user data to be passed to the callback
|
||||
* @attributes: (out) (transfer full) (array) (element-type Vte.CharAttributes): location for storing text attributes
|
||||
*
|
||||
@@ -6462,7 +6462,7 @@ vte_terminal_get_text(VteTerminal *termi
|
||||
/**
|
||||
* vte_terminal_get_text_include_trailing_spaces:
|
||||
* @terminal: a #VteTerminal
|
||||
- * @is_selected: a #VteSelectionFunc callback
|
||||
+ * @is_selected: (scope call): a #VteSelectionFunc callback
|
||||
* @user_data: (closure): user data to be passed to the callback
|
||||
* @attributes: (out) (transfer full) (array) (element-type Vte.CharAttributes): location for storing text attributes
|
||||
*
|
||||
@@ -6497,7 +6497,7 @@ vte_terminal_get_text_include_trailing_s
|
||||
* vte_terminal_get_cursor_position:
|
||||
* @terminal: a #VteTerminal
|
||||
* @column: (out) (allow-none): a location to store the column, or %NULL
|
||||
- * @row : (out) (allow-none): a location to store the row, or %NULL
|
||||
+ * @row: (out) (allow-none): a location to store the row, or %NULL
|
||||
*
|
||||
* Reads the location of the insertion cursor and returns it. The row
|
||||
* coordinate is absolute.
|
||||
40
vte-0.28.2-limit-arguments.patch
Normal file
40
vte-0.28.2-limit-arguments.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From feeee4b5832b17641e505b7083e0d299fdae318e Mon Sep 17 00:00:00 2001
|
||||
From: Christian Persch <chpe@gnome.org>
|
||||
Date: Sat, 19 May 2012 17:36:09 +0000
|
||||
Subject: emulation: Limit integer arguments to 65535
|
||||
|
||||
To guard against malicious sequences containing excessively big numbers,
|
||||
limit all parsed numbers to 16 bit range. Doing this here in the parsing
|
||||
routine is a catch-all guard; this doesn't preclude enforcing
|
||||
more stringent limits in the handlers themselves.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=676090
|
||||
---
|
||||
diff --git a/src/table.c b/src/table.c
|
||||
index 140e8c8..85cf631 100644
|
||||
--- a/src/table.c
|
||||
+++ b/src/table.c
|
||||
@@ -550,7 +550,7 @@ _vte_table_extract_numbers(GValueArray **array,
|
||||
if (G_UNLIKELY (*array == NULL)) {
|
||||
*array = g_value_array_new(1);
|
||||
}
|
||||
- g_value_set_long(&value, total);
|
||||
+ g_value_set_long(&value, CLAMP (total, 0, G_MAXUSHORT));
|
||||
g_value_array_append(*array, &value);
|
||||
} while (i++ < arginfo->length);
|
||||
g_value_unset(&value);
|
||||
diff --git a/src/vteseq.c b/src/vteseq.c
|
||||
index 457c06a..46def5b 100644
|
||||
--- a/src/vteseq.c
|
||||
+++ b/src/vteseq.c
|
||||
@@ -557,7 +557,7 @@ vte_sequence_handler_multiple(VteTerminal *terminal,
|
||||
GValueArray *params,
|
||||
VteTerminalSequenceHandler handler)
|
||||
{
|
||||
- vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXLONG);
|
||||
+ vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXUSHORT);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
cgit v0.9.0.2
|
||||
268
vte-0.28.2-mouse-tracking.patch
Normal file
268
vte-0.28.2-mouse-tracking.patch
Normal file
@ -0,0 +1,268 @@
|
||||
--- vte-0.28.2-clean/src/mev.c 2011-08-16 23:52:48.000000000 +0200
|
||||
+++ vte-0.28.2-clean/src/mev.c 2018-05-03 22:07:30.275915172 +0200
|
||||
@@ -42,7 +42,9 @@
|
||||
tracking_mouse = 1000,
|
||||
tracking_hilite = 1001,
|
||||
tracking_cell_motion = 1002,
|
||||
- tracking_all_motion = 1003
|
||||
+ tracking_all_motion = 1003,
|
||||
+ tracking_xterm_ext = 1006,
|
||||
+ tracking_urxvt = 1015
|
||||
} tracking_mode = 0;
|
||||
|
||||
static void
|
||||
@@ -59,6 +61,8 @@
|
||||
decset(tracking_hilite, FALSE);
|
||||
decset(tracking_cell_motion, FALSE);
|
||||
decset(tracking_all_motion, FALSE);
|
||||
+ decset(tracking_xterm_ext, FALSE);
|
||||
+ decset(tracking_urxvt, FALSE);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
@@ -93,6 +97,14 @@
|
||||
fprintf(stdout, "All motion tracking enabled.\r\n");
|
||||
decset(tracking_all_motion, TRUE);
|
||||
break;
|
||||
+ case tracking_xterm_ext:
|
||||
+ fprintf(stdout, "Xterm 1006 mouse tracking extension enabled.\r\n");
|
||||
+ decset(tracking_xterm_ext, TRUE);
|
||||
+ break;
|
||||
+ case tracking_urxvt:
|
||||
+ fprintf(stdout, "rxvt-unicode 1015 mouse tracking extension enabled.\r\n");
|
||||
+ decset(tracking_urxvt, TRUE);
|
||||
+ break;
|
||||
default:
|
||||
fprintf(stdout, "Tracking disabled.\r\n");
|
||||
break;
|
||||
@@ -102,6 +114,8 @@
|
||||
fprintf(stdout, "C - Hilite tracking [FIXME: NOT IMPLEMENTED].\r\n");
|
||||
fprintf(stdout, "D - Cell motion tracking.\r\n");
|
||||
fprintf(stdout, "E - All motion tracking.\r\n");
|
||||
+ fprintf(stdout, "F - Xterm 1006 extension.\r\n");
|
||||
+ fprintf(stdout, "G - rxvt-unicode extension.\r\n");
|
||||
fprintf(stdout, "%s", _VTE_CAP_ESC "8");
|
||||
fflush(stdout);
|
||||
}
|
||||
@@ -153,6 +167,18 @@
|
||||
0 : tracking_all_motion;
|
||||
i++;
|
||||
break;
|
||||
+ case 'F':
|
||||
+ case 'f':
|
||||
+ tracking_mode = (tracking_mode == tracking_xterm_ext) ?
|
||||
+ 0 : tracking_xterm_ext;
|
||||
+ i++;
|
||||
+ break;
|
||||
+ case 'G':
|
||||
+ case 'g':
|
||||
+ tracking_mode = (tracking_mode == tracking_urxvt) ?
|
||||
+ 0 : tracking_urxvt;
|
||||
+ i++;
|
||||
+ break;
|
||||
case 'Q':
|
||||
case 'q':
|
||||
ret = TRUE;
|
||||
--- vte-0.28.2-clean/src/vte.c 2018-05-03 22:04:27.780199219 +0200
|
||||
+++ vte-0.28.2-clean/src/vte.c 2018-05-03 22:07:30.277915158 +0200
|
||||
@@ -5816,21 +5816,20 @@
|
||||
}
|
||||
|
||||
static void
|
||||
-vte_terminal_get_mouse_tracking_info (VteTerminal *terminal,
|
||||
- int button,
|
||||
- long col,
|
||||
- long row,
|
||||
- unsigned char *pb,
|
||||
- unsigned char *px,
|
||||
- unsigned char *py)
|
||||
+vte_terminal_feed_mouse_event(VteTerminal *terminal,
|
||||
+ int button,
|
||||
+ gboolean is_drag,
|
||||
+ gboolean is_release,
|
||||
+ long col,
|
||||
+ long row)
|
||||
{
|
||||
- unsigned char cb = 0, cx = 0, cy = 0;
|
||||
+ unsigned char cb = 0;
|
||||
+ long cx, cy;
|
||||
+ char buf[LINE_MAX];
|
||||
+ gint len = 0;
|
||||
|
||||
/* Encode the button information in cb. */
|
||||
switch (button) {
|
||||
- case 0: /* Release/no buttons. */
|
||||
- cb = 3;
|
||||
- break;
|
||||
case 1: /* Left. */
|
||||
cb = 0;
|
||||
break;
|
||||
@@ -5847,7 +5846,12 @@
|
||||
cb = 65; /* Scroll down. */
|
||||
break;
|
||||
}
|
||||
- cb += 32; /* 32 for normal */
|
||||
+
|
||||
+ /* With the exception of the 1006 mode, button release is also encoded here. */
|
||||
+ /* Note that if multiple extensions are enabled, the 1006 is used, so it's okay to check for only that. */
|
||||
+ if (is_release && !terminal->pvt->mouse_xterm_extension) {
|
||||
+ cb = 3;
|
||||
+ }
|
||||
|
||||
/* Encode the modifiers. */
|
||||
if (terminal->pvt->modifiers & GDK_SHIFT_MASK) {
|
||||
@@ -5860,38 +5864,46 @@
|
||||
cb |= 16;
|
||||
}
|
||||
|
||||
- /* Encode the cursor coordinates. */
|
||||
- cx = 32 + CLAMP(1 + col,
|
||||
- 1, terminal->column_count);
|
||||
- cy = 32 + CLAMP(1 + row,
|
||||
- 1, terminal->row_count);;
|
||||
-
|
||||
- *pb = cb;
|
||||
- *px = cx;
|
||||
- *py = cy;
|
||||
+ /* Encode a drag event. */
|
||||
+ if (is_drag) {
|
||||
+ cb |= 32;
|
||||
+ }
|
||||
+
|
||||
+ /* Clamp the cursor coordinates. Make them 1-based. */
|
||||
+ cx = CLAMP(1 + col,
|
||||
+ 1, terminal->column_count);
|
||||
+ cy = CLAMP(1 + row,
|
||||
+ 1, terminal->row_count);
|
||||
+
|
||||
+ /* Check the extensions in decreasing order of preference. Encoding the release event above assumes that 1006 comes first. */
|
||||
+ if (terminal->pvt->mouse_xterm_extension) {
|
||||
+ /* xterm's extended mode (1006) */
|
||||
+ len = g_snprintf(buf, sizeof(buf), _VTE_CAP_CSI "<%d;%ld;%ld%c", cb, cx, cy, is_release ? 'm' : 'M');
|
||||
+ } else if (terminal->pvt->mouse_urxvt_extension) {
|
||||
+ /* urxvt's extended mode (1015) */
|
||||
+ len = g_snprintf(buf, sizeof(buf), _VTE_CAP_CSI "%d;%ld;%ldM", 32 + cb, cx, cy);
|
||||
+ } else if (cx <= 231 && cy <= 231) {
|
||||
+ /* legacy mode */
|
||||
+ len = g_snprintf(buf, sizeof(buf), _VTE_CAP_CSI "M%c%c%c", 32 + cb, 32 + (guchar)cx, 32 + (guchar)cy);
|
||||
+ }
|
||||
+
|
||||
+ /* Send event direct to the child, this is binary not text data */
|
||||
+ vte_terminal_feed_child_binary(terminal, buf, len);
|
||||
}
|
||||
|
||||
static void
|
||||
vte_terminal_send_mouse_button_internal(VteTerminal *terminal,
|
||||
int button,
|
||||
+ gboolean is_release,
|
||||
long x,
|
||||
long y)
|
||||
{
|
||||
- unsigned char cb, cx, cy;
|
||||
- char buf[LINE_MAX];
|
||||
- gint len;
|
||||
int width = terminal->char_width;
|
||||
int height = terminal->char_height;
|
||||
long col = (x - terminal->pvt->inner_border.left) / width;
|
||||
long row = (y - terminal->pvt->inner_border.top) / height;
|
||||
|
||||
- vte_terminal_get_mouse_tracking_info (terminal,
|
||||
- button, col, row,
|
||||
- &cb, &cx, &cy);
|
||||
-
|
||||
- /* Send event direct to the child, this is binary not text data */
|
||||
- len = g_snprintf(buf, sizeof(buf), _VTE_CAP_CSI "M%c%c%c", cb, cx, cy);
|
||||
- vte_terminal_feed_child_binary(terminal, buf, len);
|
||||
+ vte_terminal_feed_mouse_event(terminal, button, FALSE /* not drag */, is_release, col, row);
|
||||
}
|
||||
|
||||
/* Send a mouse button click/release notification. */
|
||||
@@ -5919,7 +5931,8 @@
|
||||
}
|
||||
|
||||
vte_terminal_send_mouse_button_internal(terminal,
|
||||
- (event->type == GDK_BUTTON_PRESS) ? event->button : 0,
|
||||
+ event->button,
|
||||
+ event->type == GDK_BUTTON_RELEASE,
|
||||
event->x, event->y);
|
||||
}
|
||||
|
||||
@@ -5927,9 +5940,6 @@
|
||||
static void
|
||||
vte_terminal_maybe_send_mouse_drag(VteTerminal *terminal, GdkEventMotion *event)
|
||||
{
|
||||
- unsigned char cb, cx, cy;
|
||||
- char buf[LINE_MAX];
|
||||
- gint len;
|
||||
int width = terminal->char_width;
|
||||
int height = terminal->char_height;
|
||||
long col = ((long) event->x - terminal->pvt->inner_border.left) / width;
|
||||
@@ -5958,14 +5968,9 @@
|
||||
break;
|
||||
}
|
||||
|
||||
- vte_terminal_get_mouse_tracking_info (terminal,
|
||||
- terminal->pvt->mouse_last_button, col, row,
|
||||
- &cb, &cx, &cy);
|
||||
- cb += 32; /* for movement */
|
||||
-
|
||||
- /* Send event direct to the child, this is binary not text data */
|
||||
- len = g_snprintf(buf, sizeof(buf), _VTE_CAP_CSI "M%c%c%c", cb, cx, cy);
|
||||
- vte_terminal_feed_child_binary(terminal, buf, len);
|
||||
+ vte_terminal_feed_mouse_event(terminal, terminal->pvt->mouse_last_button,
|
||||
+ TRUE /* drag */, FALSE /* not release */,
|
||||
+ col, row);
|
||||
}
|
||||
|
||||
/* Clear all match hilites. */
|
||||
@@ -11384,6 +11389,7 @@
|
||||
/* Encode the parameters and send them to the app. */
|
||||
vte_terminal_send_mouse_button_internal(terminal,
|
||||
button,
|
||||
+ FALSE /* not release */,
|
||||
event->x,
|
||||
event->y);
|
||||
}
|
||||
@@ -14091,6 +14097,8 @@
|
||||
pvt->mouse_last_button = 0;
|
||||
pvt->mouse_last_x = 0;
|
||||
pvt->mouse_last_y = 0;
|
||||
+ pvt->mouse_xterm_extension = FALSE;
|
||||
+ pvt->mouse_urxvt_extension = FALSE;
|
||||
/* Clear modifiers. */
|
||||
pvt->modifiers = 0;
|
||||
/* Reset miscellaneous stuff. */
|
||||
--- vte-0.28.2-clean/src/vte-private.h 2018-05-03 22:04:27.773199268 +0200
|
||||
+++ vte-0.28.2-clean/src/vte-private.h 2018-05-03 22:07:30.275915172 +0200
|
||||
@@ -305,6 +305,8 @@
|
||||
long mouse_last_x, mouse_last_y;
|
||||
gboolean mouse_autohide;
|
||||
guint mouse_autoscroll_tag;
|
||||
+ gboolean mouse_xterm_extension;
|
||||
+ gboolean mouse_urxvt_extension;
|
||||
|
||||
/* State variables for handling match checks. */
|
||||
char *match_contents;
|
||||
--- vte-0.28.2-clean/src/vteseq.c 2018-05-03 22:04:27.773199268 +0200
|
||||
+++ vte-0.28.2-clean/src/vteseq.c 2018-05-03 22:07:30.277915158 +0200
|
||||
@@ -685,10 +685,20 @@
|
||||
GINT_TO_POINTER(0),
|
||||
GINT_TO_POINTER(MOUSE_TRACKING_ALL_MOTION_TRACKING),
|
||||
NULL, NULL,},
|
||||
+ /* 1006: Extended mouse coordinates. */
|
||||
+ {1006, &terminal->pvt->mouse_xterm_extension, NULL, NULL,
|
||||
+ GINT_TO_POINTER(FALSE),
|
||||
+ GINT_TO_POINTER(TRUE),
|
||||
+ NULL, NULL,},
|
||||
/* 1010/rxvt: disallowed, scroll-on-output is set by user. */
|
||||
{1010, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
|
||||
/* 1011/rxvt: disallowed, scroll-on-keypress is set by user. */
|
||||
{1011, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
|
||||
+ /* 1015/urxvt: Extended mouse coordinates. */
|
||||
+ {1015, &terminal->pvt->mouse_urxvt_extension, NULL, NULL,
|
||||
+ GINT_TO_POINTER(FALSE),
|
||||
+ GINT_TO_POINTER(TRUE),
|
||||
+ NULL, NULL,},
|
||||
/* 1035: disallowed, don't know what to do with it. */
|
||||
{1035, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
|
||||
/* 1036: Meta-sends-escape. */
|
||||
71
vte-0.28.2-paste-fix.diff
Normal file
71
vte-0.28.2-paste-fix.diff
Normal file
@ -0,0 +1,71 @@
|
||||
diff -ur vte-0.28.2.orig/src/vte.c vte-0.28.2/src/vte.c
|
||||
--- vte-0.28.2.orig/src/vte.c 2011-08-29 00:31:45.000000000 +0300
|
||||
+++ vte-0.28.2/src/vte.c 2014-06-26 04:20:52.409371214 +0300
|
||||
@@ -5806,10 +5806,10 @@
|
||||
p++;
|
||||
}
|
||||
}
|
||||
- if (terminal->pvt->screen->bracketed_paste_mode)
|
||||
+ if (terminal->pvt->bracketed_paste_mode)
|
||||
vte_terminal_feed_child(terminal, "\e[200~", -1);
|
||||
vte_terminal_feed_child(terminal, paste, length);
|
||||
- if (terminal->pvt->screen->bracketed_paste_mode)
|
||||
+ if (terminal->pvt->bracketed_paste_mode)
|
||||
vte_terminal_feed_child(terminal, "\e[201~", -1);
|
||||
g_free(paste);
|
||||
}
|
||||
@@ -14065,14 +14065,12 @@
|
||||
pvt->normal_screen.linefeed_mode = FALSE;
|
||||
pvt->normal_screen.origin_mode = FALSE;
|
||||
pvt->normal_screen.reverse_mode = FALSE;
|
||||
- pvt->normal_screen.bracketed_paste_mode = FALSE;
|
||||
pvt->alternate_screen.scrolling_restricted = FALSE;
|
||||
pvt->alternate_screen.sendrecv_mode = TRUE;
|
||||
pvt->alternate_screen.insert_mode = FALSE;
|
||||
pvt->alternate_screen.linefeed_mode = FALSE;
|
||||
pvt->alternate_screen.origin_mode = FALSE;
|
||||
pvt->alternate_screen.reverse_mode = FALSE;
|
||||
- pvt->alternate_screen.bracketed_paste_mode = FALSE;
|
||||
pvt->cursor_visible = TRUE;
|
||||
/* Reset the encoding. */
|
||||
vte_terminal_set_encoding(terminal, NULL);
|
||||
@@ -14102,6 +14100,8 @@
|
||||
pvt->mouse_last_y = 0;
|
||||
/* Clear modifiers. */
|
||||
pvt->modifiers = 0;
|
||||
+ /* Reset miscellaneous stuff. */
|
||||
+ pvt->bracketed_paste_mode = FALSE;
|
||||
/* Cause everything to be redrawn (or cleared). */
|
||||
vte_terminal_maybe_scroll_to_bottom(terminal);
|
||||
_vte_invalidate_all(terminal);
|
||||
diff -ur vte-0.28.2.orig/src/vte-private.h vte-0.28.2/src/vte-private.h
|
||||
--- vte-0.28.2.orig/src/vte-private.h 2011-08-17 00:52:48.000000000 +0300
|
||||
+++ vte-0.28.2/src/vte-private.h 2014-06-26 04:20:52.410371214 +0300
|
||||
@@ -219,7 +219,6 @@
|
||||
gboolean sendrecv_mode; /* sendrecv mode */
|
||||
gboolean insert_mode; /* insert mode */
|
||||
gboolean linefeed_mode; /* linefeed mode */
|
||||
- gboolean bracketed_paste_mode;
|
||||
struct vte_scrolling_region {
|
||||
int start, end;
|
||||
} scrolling_region; /* the region we scroll in */
|
||||
@@ -274,6 +273,7 @@
|
||||
gboolean text_modified_flag;
|
||||
gboolean text_inserted_flag;
|
||||
gboolean text_deleted_flag;
|
||||
+ gboolean bracketed_paste_mode;
|
||||
|
||||
/* Scrolling options. */
|
||||
gboolean scroll_background;
|
||||
diff -ur vte-0.28.2.orig/src/vteseq.c vte-0.28.2/src/vteseq.c
|
||||
--- vte-0.28.2.orig/src/vteseq.c 2014-06-26 04:08:49.998358634 +0300
|
||||
+++ vte-0.28.2/src/vteseq.c 2014-06-26 04:34:00.214384933 +0300
|
||||
@@ -737,7 +737,7 @@
|
||||
GINT_TO_POINTER(TRUE),
|
||||
NULL, NULL},
|
||||
/* 2004: Bracketed paste mode. */
|
||||
- {2004, &terminal->pvt->screen->bracketed_paste_mode, NULL, NULL,
|
||||
+ {2004, &terminal->pvt->bracketed_paste_mode, NULL, NULL,
|
||||
GINT_TO_POINTER(FALSE),
|
||||
GINT_TO_POINTER(TRUE),
|
||||
NULL, NULL,},
|
||||
11
vte-0.28.2-performance.patch
Normal file
11
vte-0.28.2-performance.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- o/src/vte.c 2018-05-03 20:53:16.000000000 +0200
|
||||
+++ o/src/vte.c 2018-05-03 20:57:48.764010197 +0200
|
||||
@@ -4520,7 +4520,7 @@
|
||||
if (max_bytes) {
|
||||
max_bytes = terminal->pvt->max_input_bytes / max_bytes;
|
||||
} else {
|
||||
- max_bytes = VTE_MAX_INPUT_READ;
|
||||
+ max_bytes = terminal->pvt->max_input_bytes;
|
||||
}
|
||||
bytes = terminal->pvt->input_bytes;
|
||||
|
||||
BIN
vte-0.28.2.tar.xz
Normal file
BIN
vte-0.28.2.tar.xz
Normal file
Binary file not shown.
2288
vte-aarch64.patch
Normal file
2288
vte-aarch64.patch
Normal file
File diff suppressed because it is too large
Load Diff
74
vte-alt-meta-confusion.patch
Normal file
74
vte-alt-meta-confusion.patch
Normal file
@ -0,0 +1,74 @@
|
||||
From 180dcc578e13c6096e277fb853e7162db640f207 Mon Sep 17 00:00:00 2001
|
||||
From: Alexandre Rostovtsev <tetromino@gentoo.org>
|
||||
Date: Tue, 15 Nov 2011 03:06:40 -0500
|
||||
Subject: [PATCH] Map both gdk's Meta and Alt to vte's Meta for >=gtk+-3.2.2
|
||||
compatibility
|
||||
|
||||
Also, since VTE_META_MASK is now a mask with multiple bits set, code that
|
||||
compares gdk key modifiers to VTE_META_MASK by numerical equality is no
|
||||
longer guaranteed to work. Therefore, for such comparisons a new function,
|
||||
vte_keymap_fixup_modifiers, is introduced; it ensures that if any bits
|
||||
matching matching VTE_META_MASK are set, then all are set.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=663779
|
||||
---
|
||||
src/keymap.c | 15 +++++++++++++--
|
||||
src/keymap.h | 2 +-
|
||||
2 files changed, 14 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/keymap.c b/src/keymap.c
|
||||
index 9a21669..95b4c5b 100644
|
||||
--- a/src/keymap.c
|
||||
+++ b/src/keymap.c
|
||||
@@ -990,6 +990,17 @@ static const struct _vte_keymap_group {
|
||||
{GDK_KEY (F35), _vte_keymap_GDK_F35},
|
||||
};
|
||||
|
||||
+/* Restrict modifiers to the specified mask and ensure that VTE_META_MASK,
|
||||
+ * despite being a compound mask, is treated as indivisible. */
|
||||
+GdkModifierType
|
||||
+_vte_keymap_fixup_modifiers(GdkModifierType modifiers,
|
||||
+ GdkModifierType mask)
|
||||
+{
|
||||
+ if (modifiers & VTE_META_MASK)
|
||||
+ modifiers |= VTE_META_MASK;
|
||||
+ return modifiers & mask;
|
||||
+}
|
||||
+
|
||||
/* Map the specified keyval/modifier setup, dependent on the mode, to either
|
||||
* a literal string or a capability name. */
|
||||
void
|
||||
@@ -1104,7 +1115,7 @@ _vte_keymap_map(guint keyval,
|
||||
} else {
|
||||
fkey_mode = fkey_default;
|
||||
}
|
||||
- modifiers &= (GDK_SHIFT_MASK | GDK_CONTROL_MASK | VTE_META_MASK | VTE_NUMLOCK_MASK);
|
||||
+ modifiers = _vte_keymap_fixup_modifiers(modifiers, GDK_SHIFT_MASK | GDK_CONTROL_MASK | VTE_META_MASK | VTE_NUMLOCK_MASK);
|
||||
|
||||
/* Search for the conditions. */
|
||||
for (i = 0; entries[i].normal_length || entries[i].special[0]; i++)
|
||||
@@ -1375,7 +1386,7 @@ _vte_keymap_key_add_key_modifiers(guint keyval,
|
||||
return;
|
||||
}
|
||||
|
||||
- switch (modifiers & significant_modifiers) {
|
||||
+ switch (_vte_keymap_fixup_modifiers(modifiers, significant_modifiers)) {
|
||||
case 0:
|
||||
modifier = 0;
|
||||
break;
|
||||
diff --git a/src/keymap.h b/src/keymap.h
|
||||
index 243e22e..21d9b8e 100644
|
||||
--- a/src/keymap.h
|
||||
+++ b/src/keymap.h
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
-#define VTE_META_MASK GDK_META_MASK
|
||||
+#define VTE_META_MASK (GDK_META_MASK | GDK_MOD1_MASK)
|
||||
#define VTE_NUMLOCK_MASK GDK_MOD2_MASK
|
||||
|
||||
/* Map the specified keyval/modifier setup, dependent on the mode, to either
|
||||
--
|
||||
1.7.8.rc3
|
||||
|
||||
86
vte-python-bugfixes.patch
Normal file
86
vte-python-bugfixes.patch
Normal file
@ -0,0 +1,86 @@
|
||||
diff -ur vte-0.22.5-orig/python/vte.override vte-0.22.5-python-get-text/python/vte.override
|
||||
--- vte-0.22.5-orig/python/vte.override 2010-01-16 20:54:40.515014436 -0500
|
||||
+++ vte-0.22.5-python-get-text/python/vte.override 2010-01-16 22:14:40.881828300 -0500
|
||||
@@ -306,9 +306,9 @@
|
||||
}
|
||||
|
||||
cb = PySequence_GetItem(data, 0); /* INCREFs */
|
||||
- Py_XDECREF(cb);
|
||||
|
||||
if (!PyCallable_Check(cb)) {
|
||||
+ Py_XDECREF(cb);
|
||||
PyErr_SetString(PyExc_TypeError, "callback is not a callable object");
|
||||
return FALSE;
|
||||
}
|
||||
@@ -320,6 +320,7 @@
|
||||
PyTuple_SetItem(args, 3, PySequence_GetItem(data, 2));
|
||||
|
||||
result = PyObject_CallObject(cb, args);
|
||||
+ Py_XDECREF(cb);
|
||||
Py_DECREF(args);
|
||||
|
||||
ret = (result && PyObject_IsTrue(result));
|
||||
@@ -332,7 +333,7 @@
|
||||
build_attributes(GArray *attrs)
|
||||
{
|
||||
PyObject *py_attrs = PyTuple_New(attrs->len);
|
||||
- int count;
|
||||
+ guint count;
|
||||
PyObject *row = PyString_FromString("row");
|
||||
PyObject *column = PyString_FromString("column");
|
||||
PyObject *fore = PyString_FromString("fore");
|
||||
@@ -344,6 +345,8 @@
|
||||
VteCharAttributes *cht;
|
||||
PyObject *py_char_attr;
|
||||
|
||||
+ cht = &g_array_index(attrs, VteCharAttributes, count);
|
||||
+
|
||||
py_char_attr = Py_BuildValue("{S:l,S:l,S:N,S:N,S:I,S:I}",
|
||||
row, cht->row,
|
||||
column, cht->column,
|
||||
@@ -380,10 +383,9 @@
|
||||
GArray *attrs = NULL;
|
||||
char *text;
|
||||
PyObject *py_attrs;
|
||||
- int count;
|
||||
long length;
|
||||
|
||||
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OO:terminal_get_text",
|
||||
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OOO:terminal_get_text",
|
||||
kwlist, &callback, &do_attr, &data)) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -451,10 +453,9 @@
|
||||
GArray *attrs = NULL;
|
||||
char *text;
|
||||
PyObject *py_attrs;
|
||||
- int count;
|
||||
long length;
|
||||
|
||||
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OO:terminal_get_text_include_trailing_spaces",
|
||||
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OOO:terminal_get_text_include_trailing_spaces",
|
||||
kwlist, &callback, &do_attr, &data)) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -522,11 +523,10 @@
|
||||
GArray *attrs = NULL;
|
||||
char *text;
|
||||
PyObject *py_attrs;
|
||||
- int count;
|
||||
long length;
|
||||
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
||||
- "llllO|OO:terminal_get_text_range",
|
||||
+ "llll|OOO:terminal_get_text_range",
|
||||
kwlist,
|
||||
&start_row, &start_col, &end_row, &end_col,
|
||||
&callback, &do_attr, &data)) {
|
||||
@@ -641,7 +641,7 @@
|
||||
static char *kwlist[] = { "column", "row", NULL };
|
||||
gchar *ret;
|
||||
glong column, row;
|
||||
- int *tag;
|
||||
+ int tag;
|
||||
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ll:VteTerminal.match_check", kwlist, &column, &row))
|
||||
return NULL;
|
||||
111
vte.spec
Normal file
111
vte.spec
Normal file
@ -0,0 +1,111 @@
|
||||
%define glib2_version 2.26.0
|
||||
%define pango_version 1.22.0
|
||||
%define gtk2_version 2.20.0
|
||||
Name: vte
|
||||
Version: 0.28.2
|
||||
Release: 1
|
||||
Summary: A terminal emulator
|
||||
License: LGPLv2+
|
||||
URL: http://developer.gnome.org/vte/
|
||||
Source: http://download.gnome.org/sources/vte/0.28/%{name}-%{version}.tar.xz
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=663779
|
||||
Patch0: vte-alt-meta-confusion.patch
|
||||
# Python bindings bugfix
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=556200
|
||||
Patch1: vte-python-bugfixes.patch
|
||||
# limit arguments to avoid DOS
|
||||
Patch2: vte-0.28.2-limit-arguments.patch
|
||||
# aarch64 support
|
||||
Patch3: http://ausil.fedorapeople.org/aarch64/vte/vte-aarch64.patch
|
||||
# Fix control home/control end codes
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1114074
|
||||
Patch4: vte-0.28.2-control.patch
|
||||
# Fix mc paste
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1114301
|
||||
Patch5: vte-0.28.2-paste-fix.diff
|
||||
# Backport introspection fixes
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1256535
|
||||
Patch6: vte-0.28.2-introspection-fixes.patch
|
||||
# Backport "cat bigfile" speedup
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=721944
|
||||
Patch7: vte-0.28.2-performance.patch
|
||||
# Backport shift-mouse grab "hang" fix
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=683730
|
||||
Patch8: vte-0.28.2-683730.patch
|
||||
# Backport extended xterm/urxvt mouse tracking support
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=681329
|
||||
Patch9: vte-0.28.2-mouse-tracking.patch
|
||||
BuildRequires: gtk2-devel >= %{gtk2_version} pango-devel >= %{pango_version}
|
||||
BuildRequires: glib2-devel >= %{glib2_version} pygtk2-devel, python2-devel, ncurses-devel
|
||||
BuildRequires: gettext libXt-devel intltool perl-Carp gobject-introspection-devel
|
||||
BuildRequires: /usr/bin/python
|
||||
Requires: systemd
|
||||
%description
|
||||
VTE is a terminal emulator widget for use with GTK+ 2.0.
|
||||
|
||||
%package devel
|
||||
Summary: Files needed for developing applications which use vte
|
||||
Requires: %{name} = %{version}-%{release} gtk2-devel ncurses-devel pkgconfig pygtk2-devel
|
||||
%description devel
|
||||
The vte-devel package includes the header files and developer docs
|
||||
for the vte package.
|
||||
Install vte-devel if you want to develop programs which will use
|
||||
vte.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p2
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
|
||||
%build
|
||||
PYTHON=%{__python2}
|
||||
export PYTHON
|
||||
%configure \
|
||||
--enable-shared \
|
||||
--enable-static \
|
||||
--enable-introspection \
|
||||
--with-gtk=2.0 \
|
||||
--libexecdir=%{_libdir}/%{name} \
|
||||
--without-glX \
|
||||
--disable-gtk-doc
|
||||
make %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
make install DESTDIR=$RPM_BUILD_ROOT
|
||||
rm $RPM_BUILD_ROOT/%{_libdir}/lib%{name}.a
|
||||
rm $RPM_BUILD_ROOT/%{_libdir}/lib%{name}.la
|
||||
rm -f $RPM_BUILD_ROOT/%{_libdir}/python*/site-packages/gtk-2.0/*.la
|
||||
rm -f $RPM_BUILD_ROOT/%{_libdir}/python*/site-packages/gtk-2.0/*.a
|
||||
%find_lang vte-0.0
|
||||
|
||||
%files -f vte-0.0.lang
|
||||
%doc COPYING HACKING NEWS README
|
||||
%doc src/iso2022.txt
|
||||
%doc doc/utmpwtmp.txt doc/boxes.txt doc/openi18n/UTF-8.txt doc/openi18n/wrap.txt
|
||||
%{_libdir}/*.so.*
|
||||
%dir %{_libdir}/vte
|
||||
%attr(2711,root,utmp) %{_libdir}/vte/gnome-pty-helper
|
||||
%{_datadir}/%{name}
|
||||
%{_libdir}/python*/site-packages/*
|
||||
%{_libdir}/girepository-1.0
|
||||
|
||||
%files devel
|
||||
%{_includedir}/*
|
||||
%{_libdir}/*.so
|
||||
%{_libdir}/pkgconfig/*
|
||||
%{_bindir}/%{name}
|
||||
%{_datadir}/pygtk/2.0/defs/vte.defs
|
||||
%{_datadir}/gir-1.0
|
||||
%doc %{_datadir}/gtk-doc/html/vte-0.0
|
||||
|
||||
%changelog
|
||||
* Mon Aug 3 2020 fanjiachen <fanjiachen3@huawei.com> - 0.28.2-1
|
||||
- package init
|
||||
Loading…
x
Reference in New Issue
Block a user