diff options
-rw-r--r-- | src/vte/vteterminal.h | 3 | ||||
-rw-r--r-- | src/vtegtk.cc | 32 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/vte/vteterminal.h b/src/vte/vteterminal.h index 0d3cf51c..6f8a7751 100644 --- a/src/vte/vteterminal.h +++ b/src/vte/vteterminal.h @@ -358,6 +358,9 @@ gboolean vte_terminal_get_allow_hyperlink(VteTerminal *terminal) _VTE_CXX_NOEXCE _VTE_PUBLIC gboolean vte_terminal_get_has_selection(VteTerminal *terminal) _VTE_CXX_NOEXCEPT _VTE_GNUC_NONNULL(1); +_VTE_PUBLIC +char* vte_terminal_get_text_selected(VteTerminal* terminal) _VTE_CXX_NOEXCEPT _VTE_GNUC_NONNULL(1); + /* Set what happens when the user strikes backspace or delete. */ _VTE_PUBLIC void vte_terminal_set_backspace_binding(VteTerminal *terminal, diff --git a/src/vtegtk.cc b/src/vtegtk.cc index dba6ed76..034c023b 100644 --- a/src/vtegtk.cc +++ b/src/vtegtk.cc @@ -5577,6 +5577,38 @@ catch (...) } /** + * vte_terminal_get_text_selected: + * @terminal: a #VteTerminal + * + * Gets the currently selected text. + * + * Returns: (transfer full) (nullable): a newly allocated string containing the selected text, or %NULL if there is no selection + * + * Since: 0.70 + */ +char* +vte_terminal_get_text_selected(VteTerminal* terminal) noexcept +try +{ + g_return_val_if_fail(VTE_IS_TERMINAL(terminal), nullptr); + + auto const selection = IMPL(terminal)->m_selection_resolved; + return vte_terminal_get_text_range(terminal, + selection.start_row(), + selection.start_column(), + selection.last_row(), + selection.end_column(), + nullptr, + nullptr, + nullptr); +} +catch (...) +{ + vte::log_exception(); + return nullptr; +} + +/** * vte_terminal_get_icon_title: * @terminal: a #VteTerminal * |