Attached is a patch that fixes this issue and probably other related ones
that have not been reported.
--- vte-0.28.2/src/vte.c 2014-12-10 20:58:07.000000000 -0500
+++ vte-0.28.2-fix-termcap-restoration/src/vte.c 2014-12-10 20:52:42.833753783 -0500
@@ -8130,4 +8130,29 @@
#endif /* GTK 2.x */
+/* Reset to default those values whose defaults come from termcap/emulation */
+static void vte_terminal_reset_emulation(VteTerminal *terminal) {
+ /* Read emulation flags. */
+ terminal->pvt->flags.am =
+ _vte_termcap_find_boolean(terminal->pvt->termcap,
+ terminal->pvt->emulation,
+ "am");
+ terminal->pvt->flags.bw =
+ _vte_termcap_find_boolean(terminal->pvt->termcap,
+ terminal->pvt->emulation,
+ "bw");
+ terminal->pvt->flags.LP =
+ _vte_termcap_find_boolean(terminal->pvt->termcap,
+ terminal->pvt->emulation,
+ "LP");
+ terminal->pvt->flags.ul =
+ _vte_termcap_find_boolean(terminal->pvt->termcap,
+ terminal->pvt->emulation,
+ "ul");
+ terminal->pvt->flags.xn =
+ _vte_termcap_find_boolean(terminal->pvt->termcap,
+ terminal->pvt->emulation,
+ "xn");
+}
+
/**
* vte_terminal_set_emulation:
@@ -8170,20 +8195,5 @@
if (terminal->pvt->termcap != NULL) {
- /* Read emulation flags. */
- terminal->pvt->flags.am = _vte_termcap_find_boolean(terminal->pvt->termcap,
- terminal->pvt->emulation,
- "am");
- terminal->pvt->flags.bw = _vte_termcap_find_boolean(terminal->pvt->termcap,
- terminal->pvt->emulation,
- "bw");
- terminal->pvt->flags.LP = _vte_termcap_find_boolean(terminal->pvt->termcap,
- terminal->pvt->emulation,
- "LP");
- terminal->pvt->flags.ul = _vte_termcap_find_boolean(terminal->pvt->termcap,
- terminal->pvt->emulation,
- "ul");
- terminal->pvt->flags.xn = _vte_termcap_find_boolean(terminal->pvt->termcap,
- terminal->pvt->emulation,
- "xn");
+ vte_terminal_reset_emulation(terminal);
/* Resize to the given default. */
@@ -14010,4 +14020,10 @@
/* Enable iso2022/NRC processing. */
pvt->nrc_mode = TRUE;
+
+ /* Restore emulation-dependent defaults */
+ if (pvt->termcap != NULL) {
+ vte_terminal_reset_emulation(terminal);
+ }
+
/* Reset saved settings. */
if (pvt->dec_saved != NULL) {