init package

This commit is contained in:
fanjiachen 2020-08-28 14:59:23 +08:00
parent adcb8bcc85
commit 3b38168cb0
13 changed files with 3127 additions and 0 deletions

22
vte-0.28.2-683730.patch Normal file
View 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
View 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):

View 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.

View 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

View 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
View 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,},

View 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

Binary file not shown.

2288
vte-aarch64.patch Normal file

File diff suppressed because it is too large Load Diff

View 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
View 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
View 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

4
vte.yaml Normal file
View File

@ -0,0 +1,4 @@
version_control: download.gnome
src_repo: vte
tag_prefixe: ""
seperator: "."