diff options
author | Jamie Murphy <hello@jamiethalacker.dev> | 2022-07-03 21:48:03 +0200 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2022-07-03 21:48:03 +0200 |
commit | 3ed53bfaa7344ce5b7727a60a2d33315b15201e5 (patch) | |
tree | 5884f2bbf2cd0b4472857d1057bc15e42428731c | |
parent | 0372107ad01e84912ac6c4806f4b6b1c47d8634b (diff) | |
download | vte-3ed53bfaa7344ce5b7727a60a2d33315b15201e5.tar.gz |
widget: Add API to get selected text
Fixes: https://gitlab.gnome.org/GNOME/vte/-/issues/2563
-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 * |