Only in vte-0.38.0.new: expose_select_text.patch diff -aur vte-0.38.0/src/vteaccess.c vte-0.38.0.new/src/vteaccess.c --- vte-0.38.0/src/vteaccess.c 2014-08-13 08:00:38.000000000 -0400 +++ vte-0.38.0.new/src/vteaccess.c 2014-09-21 17:05:23.934641193 -0400 @@ -1427,7 +1427,7 @@ *start_offset = offset_from_xy (priv, start_x, start_y); _vte_terminal_get_end_selection (terminal, &end_x, &end_y); *end_offset = offset_from_xy (priv, end_x, end_y); - return _vte_terminal_get_selection (terminal); + return vte_terminal_get_selection (terminal); } static gboolean diff -aur vte-0.38.0/src/vte.c vte-0.38.0.new/src/vte.c --- vte-0.38.0/src/vte.c 2014-09-13 03:23:47.000000000 -0400 +++ vte-0.38.0.new/src/vte.c 2014-09-21 17:03:04.671656749 -0400 @@ -122,7 +122,6 @@ gpointer data, GArray *attributes, gboolean include_trailing_spaces); -static void _vte_terminal_disconnect_pty_read(VteTerminal *terminal); static void _vte_terminal_disconnect_pty_write(VteTerminal *terminal); static void vte_terminal_stop_processing (VteTerminal *terminal); @@ -3267,9 +3266,10 @@ _vte_debug_print (VTE_DEBUG_IO, "removed poll of vte_terminal_io_read\n"); terminal->pvt->pty_input_source = 0; } -static void -_vte_terminal_connect_pty_read(VteTerminal *terminal) +void +vte_terminal_connect_pty_read(VteTerminal *terminal) { + g_return_if_fail(VTE_IS_TERMINAL(terminal)); if (terminal->pvt->pty_channel == NULL) { return; } @@ -3321,9 +3321,10 @@ } } -static void -_vte_terminal_disconnect_pty_read(VteTerminal *terminal) +void +vte_terminal_disconnect_pty_read(VteTerminal *terminal) { + g_return_if_fail(VTE_IS_TERMINAL(terminal)); if (terminal->pvt->pty_input_source != 0) { _vte_debug_print (VTE_DEBUG_IO, "disconnecting poll of vte_terminal_io_read\n"); g_source_remove(terminal->pvt->pty_input_source); @@ -6154,6 +6155,28 @@ } } +/** + * vte_terminal_set_cursor_position: + * @terminal: a #VteTerminal + * @column: the new cursor column + * @row: the new cursor row + * + * Set the location of the cursor. + */ +void +vte_terminal_set_cursor_position(VteTerminal *terminal, + long column, long row) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + + _vte_invalidate_cursor_once(terminal, FALSE); + terminal->pvt->screen->cursor_current.col = column; + terminal->pvt->screen->cursor_current.row = row; + _vte_invalidate_cursor_once(terminal, FALSE); + _vte_check_cursor_blink(terminal); + vte_terminal_queue_cursor_moved(terminal); +} + static GtkClipboard * vte_terminal_clipboard_get(VteTerminal *terminal, GdkAtom board) { @@ -6319,7 +6342,7 @@ vte_terminal_extend_selection(terminal, x, y, FALSE, TRUE); /* Temporarily stop caring about input from the child. */ - _vte_terminal_disconnect_pty_read(terminal); + vte_terminal_disconnect_pty_read(terminal); } static gboolean @@ -6336,7 +6359,7 @@ terminal->pvt->selecting = FALSE; /* Reconnect to input from the child if we paused it. */ - _vte_terminal_connect_pty_read(terminal); + vte_terminal_connect_pty_read(terminal); return TRUE; } @@ -6834,6 +6857,50 @@ vte_terminal_deselect_all (terminal); } +/** + * vte_terminal_get_selection_block_mode: + * @terminal: a #VteTerminal + * + * Checks whether or not block selection is enabled. + * + * Returns: %TRUE if block selection is enabled, %FALSE if not + */ +gboolean +vte_terminal_get_selection_block_mode(VteTerminal *terminal) { + g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE); + return terminal->pvt->selection_block_mode; +} + +/** + * vte_terminal_set_selection_block_mode: + * @terminal: a #VteTerminal + * @block_mode: whether block selection is enabled + * + * Sets whether or not block selection is enabled. + */ +void +vte_terminal_set_selection_block_mode(VteTerminal *terminal, gboolean block_mode) { + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->pvt->selection_block_mode = block_mode; +} + +/** + * vte_terminal_select_text: + * @terminal: a #VteTerminal + * @start_col: the starting column for the selection + * @start_row: the starting row for the selection + * @end_col: the end column for the selection + * @end_row: the end row for the selection + * + * Sets the current selection region. + */ +void +vte_terminal_select_text(VteTerminal *terminal, + long start_col, long start_row, + long end_col, long end_row) { + _vte_terminal_select_text(terminal, start_col, start_row, end_col, end_row, 0, 0); +} + /* Autoscroll a bit. */ static gboolean vte_terminal_autoscroll(VteTerminal *terminal) @@ -8476,7 +8543,7 @@ #endif kill(terminal->pvt->pty_pid, SIGHUP); } - _vte_terminal_disconnect_pty_read(terminal); + vte_terminal_disconnect_pty_read(terminal); _vte_terminal_disconnect_pty_write(terminal); if (terminal->pvt->pty_channel != NULL) { g_io_channel_unref (terminal->pvt->pty_channel); @@ -12533,7 +12600,7 @@ g_object_freeze_notify(object); if (pvt->pty != NULL) { - _vte_terminal_disconnect_pty_read(terminal); + vte_terminal_disconnect_pty_read(terminal); _vte_terminal_disconnect_pty_write(terminal); if (terminal->pvt->pty_channel != NULL) { @@ -12588,7 +12655,7 @@ _vte_terminal_setup_utf8 (terminal); /* Open channels to listen for input on. */ - _vte_terminal_connect_pty_read (terminal); + vte_terminal_connect_pty_read (terminal); g_object_notify(object, "pty"); @@ -12623,7 +12690,7 @@ } char * -_vte_terminal_get_selection(VteTerminal *terminal) +vte_terminal_get_selection(VteTerminal *terminal) { g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL); Only in vte-0.38.0.new/src: .vte.c.swp diff -aur vte-0.38.0/src/vteint.h vte-0.38.0.new/src/vteint.h --- vte-0.38.0/src/vteint.h 2014-05-16 13:51:26.000000000 -0400 +++ vte-0.38.0.new/src/vteint.h 2014-09-21 17:05:44.934589281 -0400 @@ -25,7 +25,6 @@ G_BEGIN_DECLS void _vte_terminal_accessible_ref(VteTerminal *terminal); -char* _vte_terminal_get_selection(VteTerminal *terminal); void _vte_terminal_get_start_selection(VteTerminal *terminal, long *x, long *y); void _vte_terminal_get_end_selection(VteTerminal *terminal, long *x, long *y); void _vte_terminal_select_text(VteTerminal *terminal, long start_x, long start_y, long end_x, long end_y, int start_offset, int end_offset); diff -aur vte-0.38.0/src/vteterminal.h vte-0.38.0.new/src/vteterminal.h --- vte-0.38.0/src/vteterminal.h 2014-09-13 03:23:47.000000000 -0400 +++ vte-0.38.0.new/src/vteterminal.h 2014-09-21 17:03:39.094903032 -0400 @@ -170,6 +170,18 @@ void vte_terminal_select_all(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); void vte_terminal_unselect_all(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); +gboolean vte_terminal_get_selection_block_mode(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); +void vte_terminal_set_selection_block_mode(VteTerminal *terminal, + gboolean block_mode) _VTE_GNUC_NONNULL(1); +void vte_terminal_select_text(VteTerminal *terminal, + long start_col, long start_row, + long end_col, long end_row) _VTE_GNUC_NONNULL(1); +char * +vte_terminal_get_selection(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); + +/* pause and unpause output */ +void vte_terminal_disconnect_pty_read(VteTerminal *vte); +void vte_terminal_connect_pty_read(VteTerminal *vte); /* Set the terminal's size. */ void vte_terminal_set_size(VteTerminal *terminal, @@ -276,6 +288,8 @@ void vte_terminal_get_cursor_position(VteTerminal *terminal, glong *column, glong *row) _VTE_GNUC_NONNULL(1); +void vte_terminal_set_cursor_position(VteTerminal *terminal, + long column, long row) _VTE_GNUC_NONNULL(1); /* Add a matching expression, returning the tag the widget assigns to that * expression. */ Only in vte-0.38.0.new/src: .vteterminal.h.swp