vte_terminal_get_text() returns incomplete buffer
Submitted by Laurent Weislo
Link to original bug (#635814)
Description
If using a VteTerminal widget, the vte_terminal_get_text and vte_terminal_get_text_range don't return the complete buffer (last transaction missing):
argv[0] = NULL; vte_terminal_fork_command_full(VTE_TERMINAL(vteterminal), VTE_PTY_NO_LASTLOG | VTE_PTY_NO_UTMP | VTE_PTY_NO_WTMP | VTE_PTY_NO_HELPER, NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, gpid, &gerror);
vte_terminal_feed # Feed data
vte_terminal_get_text() # Does not display content
vte_terminal_set_pty_object(vteterminal, NULL) # This flushes the term data
vte_terminal_get_text() # IT WORKS !!!
I've added this function, but this might not be the most adapted solution:
void vte_terminal_flush(VteTerminal *terminal);
void vte_terminal_flush(VteTerminal *terminal){ VteTerminalPrivate *pvt;
g_return_if_fail(VTE_IS_TERMINAL(terminal));
pvt = terminal->pvt;
if (pvt->pty == NULL)
return;
if (terminal->pvt->incoming != NULL) {
vte_terminal_process_incoming(terminal);
_vte_incoming_chunks_release (terminal->pvt->incoming);
terminal->pvt->incoming = NULL;
terminal->pvt->input_bytes = 0;
}
}
Version: 0.26.x
Resolution: RESOLVED NOTABUG