[vte] widget: Move some methods to VteTerminalPrivate
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vte] widget: Move some methods to VteTerminalPrivate
- Date: Mon, 30 Nov 2015 16:23:52 +0000 (UTC)
commit efea3241838985c0d2c5da4c796c94fa65bc1941
Author: Christian Persch <chpe gnome org>
Date: Mon Nov 30 17:23:34 2015 +0100
widget: Move some methods to VteTerminalPrivate
src/vte-private.h | 25 -------
src/vte.cc | 186 ++++++++++++++++++++++++++--------------------------
src/vteaccess.cc | 20 ++----
src/vtegtk.cc | 37 +++++------
src/vteinternal.hh | 25 +++++++
5 files changed, 141 insertions(+), 152 deletions(-)
---
diff --git a/src/vte-private.h b/src/vte-private.h
index eff8645..2b9d8de 100644
--- a/src/vte-private.h
+++ b/src/vte-private.h
@@ -85,31 +85,6 @@ void _vte_terminal_set_cursor_style(VteTerminal *terminal, VteCursorStyle style)
char *_vte_terminal_attributes_to_html(VteTerminal *terminal,
const gchar *text,
GArray *attributes);
-char *_vte_terminal_get_text_range_full(VteTerminal *terminal,
- glong start_row, glong start_col,
- glong end_row, glong end_col,
- VteSelectionFunc is_selected,
- gpointer user_data,
- GArray *attributes,
- gsize *ret_len);
-char *_vte_terminal_get_text_range_maybe_wrapped(VteTerminal *terminal,
- glong start_row,
- glong start_col,
- glong end_row,
- glong end_col,
- gboolean wrap,
- VteSelectionFunc is_selected,
- gpointer data,
- GArray *attributes,
- gboolean include_trailing_spaces,
- gsize *ret_len);
-char *_vte_terminal_get_text_maybe_wrapped(VteTerminal *terminal,
- gboolean wrap,
- VteSelectionFunc is_selected,
- gpointer data,
- GArray *attributes,
- gboolean include_trailing_spaces,
- gsize *ret_len);
GdkCursor *_vte_terminal_cursor_new(VteTerminal *terminal, GdkCursorType cursor_type);
/* vteseq.c: */
diff --git a/src/vte.cc b/src/vte.cc
index 6605d05..0aa2709 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -1050,19 +1050,13 @@ void
VteTerminalPrivate::match_contents_refresh()
{
- auto start_row = _vte_terminal_first_displayed_row (m_terminal);
- auto start_col = 0;
- auto end_row = _vte_terminal_last_displayed_row (m_terminal);
- auto end_col = m_column_count - 1;
-
match_contents_clear();
GArray *array = g_array_new(FALSE, TRUE, sizeof(struct _VteCharAttributes));
- m_match_contents = vte_terminal_get_text_range(m_terminal,
- start_row, start_col,
- end_row, end_col,
- always_selected,
- NULL,
- array);
+ m_match_contents = get_text_displayed(true /* wrap */,
+ false /* include trailing whitespace */,
+ nullptr, nullptr,
+ array,
+ nullptr);
m_match_attributes = array;
}
@@ -4008,16 +4002,16 @@ next_match:
/* Deselect the current selection if its contents are changed
* by this insertion. */
if (m_has_selection) {
- char *selection;
- selection =
- vte_terminal_get_text_range(m_terminal,
- m_selection_start.row,
- 0,
- m_selection_end.row,
- m_column_count,
- vte_cell_is_selected,
- NULL,
- NULL);
+ //FIXMEchpe: this is atrocious
+ char *selection = get_text(m_selection_start.row,
+ 0,
+ m_selection_end.row,
+ m_column_count,
+ true /* wrap */,
+ false /* include trailing whitespace */,
+ vte_cell_is_selected, nullptr,
+ nullptr,
+ nullptr);
if ((selection == NULL) ||
(m_selection_text[VTE_SELECTION_PRIMARY] == NULL) ||
(strcmp(selection, m_selection_text[VTE_SELECTION_PRIMARY]) != 0)) {
@@ -5969,38 +5963,20 @@ vte_terminal_get_rgb_from_index(const VteTerminal *terminal, guint index, vte::c
}
char *
-_vte_terminal_get_text_range_full(VteTerminal *terminal,
- glong start_row, glong start_col,
- glong end_row, glong end_col,
- VteSelectionFunc is_selected,
- gpointer user_data,
- GArray *attributes,
- gsize *ret_len)
-{
- g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
- return _vte_terminal_get_text_range_maybe_wrapped(terminal,
- start_row, start_col,
- end_row, end_col,
- TRUE,
- is_selected,
- user_data,
- attributes,
- FALSE,
- ret_len);
-}
-
-char *
-_vte_terminal_get_text_range_maybe_wrapped(VteTerminal *terminal,
- glong start_row, glong start_col,
- glong end_row, glong end_col,
- gboolean wrap,
- VteSelectionFunc is_selected,
- gpointer data,
- GArray *attributes,
- gboolean include_trailing_spaces,
- gsize *ret_len)
-{
- glong col, row, last_empty, last_emptycol, last_nonempty, last_nonemptycol;
+VteTerminalPrivate::get_text(vte::grid::row_t start_row,
+ vte::grid::column_t start_col,
+ vte::grid::row_t end_row,
+ vte::grid::column_t end_col,
+ bool wrap,
+ bool include_trailing_spaces,
+ VteSelectionFunc is_selected,
+ gpointer data,
+ GArray *attributes,
+ gsize *ret_len)
+{
+ vte::grid::row_t row;
+ vte::grid::column_t col, last_emptycol, last_nonemptycol;
+ gsize last_empty, last_nonempty;
const VteCell *pcell = NULL;
GString *string;
struct _VteCharAttributes attr;
@@ -6017,7 +5993,7 @@ _vte_terminal_get_text_range_maybe_wrapped(VteTerminal *terminal,
col = start_col;
for (row = start_row; row < end_row + 1; row++, col = 0) {
- const VteRowData *row_data = _vte_terminal_find_row_data (terminal, row);
+ const VteRowData *row_data = _vte_terminal_find_row_data (m_terminal, row);
last_empty = last_nonempty = string->len;
last_emptycol = last_nonemptycol = -1;
@@ -6032,10 +6008,10 @@ _vte_terminal_get_text_range_maybe_wrapped(VteTerminal *terminal,
/* If it's not part of a multi-column character,
* and passes the selection criterion, add it to
* the selection. */
- if (!pcell->attr.fragment && is_selected(terminal, col, row, data)) {
+ if (!pcell->attr.fragment && is_selected(m_terminal, col, row, data)) {
/* Store the attributes of this character. */
- vte_terminal_get_rgb_from_index(terminal, pcell->attr.fore, &fore);
- vte_terminal_get_rgb_from_index(terminal, pcell->attr.back, &back);
+ vte_terminal_get_rgb_from_index(m_terminal, pcell->attr.fore, &fore);
+ vte_terminal_get_rgb_from_index(m_terminal, pcell->attr.back, &back);
attr.fore.red = fore.red;
attr.fore.green = fore.green;
attr.fore.blue = fore.blue;
@@ -6100,18 +6076,18 @@ _vte_terminal_get_text_range_maybe_wrapped(VteTerminal *terminal,
}
/* Adjust column, in case we want to append a newline */
- attr.column = MAX(terminal->pvt->column_count, attr.column + 1);
+ attr.column = MAX(m_column_count, attr.column + 1);
/* Add a newline in block mode. */
- if (terminal->pvt->selection_block_mode) {
+ if (m_selection_block_mode) {
string = g_string_append_c(string, '\n');
}
/* Else, if the last visible column on this line was selected and
* not soft-wrapped, append a newline. */
- else if (is_selected(terminal, terminal->pvt->column_count, row, data)) {
+ else if (is_selected(m_terminal, m_column_count, row, data)) {
/* If we didn't softwrap, add a newline. */
/* XXX need to clear row->soft_wrap on deletion! */
- if (!terminal->pvt->line_is_wrappable(row)) {
+ if (!line_is_wrappable(row)) {
string = g_string_append_c(string, '\n');
}
}
@@ -6129,28 +6105,38 @@ _vte_terminal_get_text_range_maybe_wrapped(VteTerminal *terminal,
}
char *
-_vte_terminal_get_text_maybe_wrapped(VteTerminal *terminal,
- gboolean wrap,
- VteSelectionFunc is_selected,
- gpointer data,
- GArray *attributes,
- gboolean include_trailing_spaces,
- gsize *ret_len)
-{
- long start_row, start_col, end_row, end_col;
- start_row = terminal->pvt->screen->scroll_delta;
- start_col = 0;
- end_row = start_row + terminal->pvt->row_count - 1;
- end_col = terminal->pvt->column_count - 1;
- return _vte_terminal_get_text_range_maybe_wrapped(terminal,
- start_row, start_col,
- end_row, end_col,
- wrap,
- is_selected,
- data,
- attributes,
- include_trailing_spaces,
- ret_len);
+VteTerminalPrivate::get_text_displayed(bool wrap,
+ bool include_trailing_spaces,
+ VteSelectionFunc is_selected,
+ gpointer data,
+ GArray *attributes,
+ gsize *ret_len)
+{
+ return get_text(_vte_terminal_first_displayed_row(m_terminal), 0,
+ _vte_terminal_last_displayed_row(m_terminal), m_column_count - 1,
+ wrap, include_trailing_spaces,
+ is_selected, data,
+ attributes,
+ ret_len);
+}
+
+/* This is distinct from just using first/last_displayed_row since a11y
+ * doesn't know about sub-row displays.
+ */
+char *
+VteTerminalPrivate::get_text_displayed_a11y(bool wrap,
+ bool include_trailing_spaces,
+ VteSelectionFunc is_selected,
+ gpointer data,
+ GArray *attributes,
+ gsize *ret_len)
+{
+ return get_text(m_screen->scroll_delta, 0,
+ m_screen->scroll_delta + m_row_count - 1, m_column_count - 1,
+ wrap, include_trailing_spaces,
+ is_selected, data,
+ attributes,
+ ret_len);
}
/*
@@ -6331,15 +6317,15 @@ VteTerminalPrivate::widget_copy(VteSelection sel)
/* Chuck old selected text and retrieve the newly-selected text. */
g_free(m_selection_text[sel]);
- m_selection_text[sel] =
- vte_terminal_get_text_range(m_terminal,
- m_selection_start.row,
- 0,
- m_selection_end.row,
- m_column_count,
- vte_cell_is_selected,
- NULL,
- attributes);
+ m_selection_text[sel] = get_text(m_selection_start.row,
+ 0,
+ m_selection_end.row,
+ m_column_count,
+ true /* wrap */,
+ false /* include trailing whitespace */,
+ vte_cell_is_selected, nullptr,
+ attributes,
+ nullptr);
#ifdef HTML_SELECTION
g_free(m_selection_html[sel]);
m_selection_html[sel] =
@@ -11253,7 +11239,13 @@ VteTerminalPrivate::search_rows(
gdouble value, page_size;
- row_text = _vte_terminal_get_text_range_full(m_terminal, start_row, 0, end_row, -1, NULL, NULL, NULL,
&row_text_length);
+ row_text = get_text(start_row, 0,
+ end_row, -1,
+ true /* wrap */,
+ false /* include trailing whitespace */, /* FIXMEchpe maybe do include it since
the match may depend on it? */
+ nullptr, nullptr,
+ nullptr,
+ &row_text_length);
#ifdef WITH_PCRE2
if (G_LIKELY(m_search_regex.mode == VTE_REGEX_PCRE2)) {
@@ -11328,7 +11320,13 @@ VteTerminalPrivate::search_rows(
if (!m_search_attrs)
m_search_attrs = g_array_new (FALSE, TRUE, sizeof (VteCharAttributes));
attrs = m_search_attrs;
- row_text = vte_terminal_get_text_range(m_terminal, start_row, 0, end_row, -1, NULL, NULL, attrs);
+ row_text = get_text(start_row, 0,
+ end_row, -1,
+ true /* wrap */,
+ false /* include trailing whitespace */, /* FIXMEchpe maybe true? */
+ nullptr, nullptr,
+ attrs,
+ nullptr);
ca = &g_array_index (attrs, VteCharAttributes, start);
start_row = ca->row;
diff --git a/src/vteaccess.cc b/src/vteaccess.cc
index d739652..9384b0f 100644
--- a/src/vteaccess.cc
+++ b/src/vteaccess.cc
@@ -141,13 +141,6 @@ xy_from_offset (VteTerminalAccessiblePrivate *priv,
*y = cur_y;
}
-/* "Oh yeah, that's selected. Sure." callback. */
-static gboolean
-all_selected(VteTerminal *terminal, glong column, glong row, gpointer data)
-{
- return TRUE;
-}
-
static void
emit_text_caret_moved(GObject *object, glong caret)
{
@@ -284,16 +277,17 @@ vte_terminal_accessible_update_private_data_if_needed(VteTerminalAccessible *acc
priv->snapshot_linebreaks = g_array_new(FALSE, FALSE, sizeof(int));
/* Get a new view of the uber-label. */
- tmp = vte_terminal_get_text_include_trailing_spaces(terminal,
- all_selected,
- NULL,
- priv->snapshot_attributes);
+ gsize tmp_len;
+ tmp = terminal->pvt->get_text_displayed_a11y(true /* wrap */,
+ true /* include trailing whitespace */,
+ nullptr, nullptr,
+ priv->snapshot_attributes,
+ &tmp_len);
if (tmp == NULL) {
/* Aaargh! We're screwed. */
return;
}
- priv->snapshot_text = g_string_new_len(tmp,
- priv->snapshot_attributes->len);
+ priv->snapshot_text = g_string_new_len(tmp, tmp_len);
g_free(tmp);
/* Get the offsets to the beginnings of each character. */
diff --git a/src/vtegtk.cc b/src/vtegtk.cc
index 64e31f2..8c2df94 100644
--- a/src/vtegtk.cc
+++ b/src/vtegtk.cc
@@ -2308,13 +2308,11 @@ vte_terminal_get_text(VteTerminal *terminal,
GArray *attributes)
{
g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
- return _vte_terminal_get_text_maybe_wrapped(terminal,
- TRUE,
- is_selected,
- user_data,
- attributes,
- FALSE,
- NULL);
+ return terminal->pvt->get_text_displayed(true /* wrap */,
+ false /* include trailing whitespace */,
+ is_selected, user_data,
+ attributes,
+ nullptr);
}
/**
@@ -2341,13 +2339,11 @@ vte_terminal_get_text_include_trailing_spaces(VteTerminal *terminal,
GArray *attributes)
{
g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
- return _vte_terminal_get_text_maybe_wrapped(terminal,
- TRUE,
- is_selected,
- user_data,
- attributes,
- TRUE,
- NULL);
+ return terminal->pvt->get_text_displayed(true /* wrap */,
+ true /* include trailing whitespace */,
+ is_selected, user_data,
+ attributes,
+ nullptr);
}
/**
@@ -2382,12 +2378,13 @@ vte_terminal_get_text_range(VteTerminal *terminal,
GArray *attributes)
{
g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
- return _vte_terminal_get_text_range_full(terminal,
- start_row, start_col,
- end_row, end_col,
- is_selected, user_data,
- attributes,
- NULL);
+ return terminal->pvt->get_text(start_row, start_col,
+ end_row, end_col,
+ true /* wrap */,
+ true /* include trailing whitespace */,
+ is_selected, user_data,
+ attributes,
+ nullptr);
}
/**
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index 8448ec2..740c2dc 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -546,6 +546,31 @@ public:
inline bool line_is_wrappable(vte::grid::row_t row) const;
+ char *get_text(vte::grid::row_t start_row,
+ vte::grid::column_t start_col,
+ vte::grid::row_t end_row,
+ vte::grid::column_t end_col,
+ bool wrap,
+ bool include_trailing_spaces,
+ VteSelectionFunc is_selected,
+ gpointer data,
+ GArray *attributes,
+ gsize *ret_len);
+
+ char *get_text_displayed(bool wrap,
+ bool include_trailing_spaces,
+ VteSelectionFunc is_selected,
+ gpointer data,
+ GArray *attributes,
+ gsize *ret_len);
+
+ char *get_text_displayed_a11y(bool wrap,
+ bool include_trailing_spaces,
+ VteSelectionFunc is_selected,
+ gpointer data,
+ GArray *attributes,
+ gsize *ret_len);
+
void start_selection(long x,
long y,
enum vte_selection_type selection_type);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]