[vte] widget: Move some public API to its own file
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vte] widget: Move some public API to its own file
- Date: Wed, 18 Nov 2015 20:19:56 +0000 (UTC)
commit 72b1185d2e1b0c5b5b481fb9f8ca7701dbc5d4da
Author: Christian Persch <chpe gnome org>
Date: Wed Nov 18 21:15:42 2015 +0100
widget: Move some public API to its own file
src/vte.cc | 236 ++++++++++++++++++++--------------------------------
src/vtegtk.cc | 63 ++++++++++++++
src/vteinternal.hh | 20 +++++
3 files changed, 172 insertions(+), 147 deletions(-)
---
diff --git a/src/vte.cc b/src/vte.cc
index d7025e2..95a044b 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -12654,48 +12654,26 @@ vte_terminal_search_get_gregex (VteTerminal *terminal)
return NULL;
}
-/**
- * vte_terminal_search_set_wrap_around:
- * @terminal: a #VteTerminal
- * @wrap_around: whether search should wrap
- *
- * Sets whether search should wrap around to the beginning of the
- * terminal content when reaching its end.
- */
-void
-vte_terminal_search_set_wrap_around (VteTerminal *terminal,
- gboolean wrap_around)
-{
- g_return_if_fail(VTE_IS_TERMINAL(terminal));
-
- terminal->pvt->search_wrap_around = !!wrap_around;
-}
-
-/**
- * vte_terminal_search_get_wrap_around:
- * @terminal: a #VteTerminal
- *
- * Returns: whether searching will wrap around
- */
-gboolean
-vte_terminal_search_get_wrap_around (VteTerminal *terminal)
+bool
+VteTerminalPrivate::search_set_wrap_around(bool wrap)
{
- g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+ if (wrap == m_search_wrap_around)
+ return false;
- return terminal->pvt->search_wrap_around;
+ m_search_wrap_around = wrap;
+ return true;
}
-static gboolean
-vte_terminal_search_rows(VteTerminal *terminal,
+bool
+VteTerminalPrivate::search_rows(
#ifdef WITH_PCRE2
- pcre2_match_context_8 *match_context,
- pcre2_match_data_8 *match_data,
+ pcre2_match_context_8 *match_context,
+ pcre2_match_data_8 *match_data,
#endif
- long start_row,
- long end_row,
- gboolean backward)
+ vte::grid::row_t start_row,
+ vte::grid::row_t end_row,
+ bool backward)
{
- VteTerminalPrivate *pvt;
char *row_text;
gsize row_text_length;
int start, end;
@@ -12705,42 +12683,41 @@ vte_terminal_search_rows(VteTerminal *terminal,
GArray *attrs;
gdouble value, page_size;
- pvt = terminal->pvt;
- row_text = vte_terminal_get_text_range_full (terminal, start_row, 0, end_row, -1, NULL, NULL, NULL,
&row_text_length);
+ row_text = vte_terminal_get_text_range_full(m_terminal, start_row, 0, end_row, -1, NULL, NULL, NULL,
&row_text_length);
#ifdef WITH_PCRE2
- if (G_LIKELY(pvt->search_regex.mode == VTE_REGEX_PCRE2)) {
+ if (G_LIKELY(m_search_regex.mode == VTE_REGEX_PCRE2)) {
int (* match_fn) (const pcre2_code_8 *,
PCRE2_SPTR8, PCRE2_SIZE, PCRE2_SIZE, uint32_t,
pcre2_match_data_8 *, pcre2_match_context_8 *);
gsize *ovector, so, eo;
int r;
- if (_vte_regex_get_jited(pvt->search_regex.pcre.regex))
+ if (_vte_regex_get_jited(m_search_regex.pcre.regex))
match_fn = pcre2_jit_match_8;
else
match_fn = pcre2_match_8;
- r = match_fn(_vte_regex_get_pcre(pvt->search_regex.pcre.regex),
+ r = match_fn(_vte_regex_get_pcre(m_search_regex.pcre.regex),
(PCRE2_SPTR8)row_text, row_text_length , /* subject, length */
0, /* start offset */
- pvt->search_regex.pcre.match_flags |
+ m_search_regex.pcre.match_flags |
PCRE2_NO_UTF_CHECK | PCRE2_NOTEMPTY | PCRE2_PARTIAL_SOFT /* FIXME: HARD? */,
match_data,
match_context);
if (r == PCRE2_ERROR_NOMATCH)
- return FALSE;
+ return false;
// FIXME: handle partial matches (PCRE2_ERROR_PARTIAL)
if (r < 0)
- return FALSE;
+ return false;
ovector = pcre2_get_ovector_pointer_8(match_data);
so = ovector[0];
eo = ovector[1];
if (G_UNLIKELY(so == PCRE2_UNSET || eo == PCRE2_UNSET))
- return FALSE;
+ return false;
start = so;
end = eo;
@@ -12751,23 +12728,23 @@ vte_terminal_search_rows(VteTerminal *terminal,
GMatchInfo *match_info;
GError *error = NULL;
- g_assert_cmpint(pvt->search_regex.mode, ==, VTE_REGEX_GREGEX);
+ g_assert_cmpint(m_search_regex.mode, ==, VTE_REGEX_GREGEX);
- g_regex_match_full (pvt->search_regex.gregex.regex, row_text, row_text_length, 0,
- (GRegexMatchFlags)(pvt->search_regex.gregex.match_flags |
G_REGEX_MATCH_NOTEMPTY),
+ g_regex_match_full (m_search_regex.gregex.regex, row_text, row_text_length, 0,
+ (GRegexMatchFlags)(m_search_regex.gregex.match_flags |
G_REGEX_MATCH_NOTEMPTY),
&match_info, &error);
if (error) {
g_printerr ("Error while matching: %s\n", error->message);
g_error_free (error);
g_match_info_free (match_info);
g_free (row_text);
- return TRUE;
+ return false;
}
if (!g_match_info_matches (match_info)) {
g_match_info_free (match_info);
g_free (row_text);
- return FALSE;
+ return false;
}
word = g_match_info_fetch (match_info, 0);
@@ -12779,10 +12756,10 @@ vte_terminal_search_rows(VteTerminal *terminal,
/* Fetch text again, with attributes */
g_free (row_text);
- if (!pvt->search_attrs)
- pvt->search_attrs = g_array_new (FALSE, TRUE, sizeof (VteCharAttributes));
- attrs = pvt->search_attrs;
- row_text = vte_terminal_get_text_range (terminal, start_row, 0, end_row, -1, NULL, NULL, attrs);
+ 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);
ca = &g_array_index (attrs, VteCharAttributes, start);
start_row = ca->row;
@@ -12794,30 +12771,30 @@ vte_terminal_search_rows(VteTerminal *terminal,
g_free (word);
g_free (row_text);
- _vte_terminal_select_text (terminal, start_col, start_row, end_col, end_row, 0, 0);
+ _vte_terminal_select_text(m_terminal, start_col, start_row, end_col, end_row, 0, 0);
/* Quite possibly the math here should not access adjustment directly... */
- value = gtk_adjustment_get_value(terminal->pvt->vadjustment);
- page_size = gtk_adjustment_get_page_size(terminal->pvt->vadjustment);
+ value = gtk_adjustment_get_value(m_vadjustment);
+ page_size = gtk_adjustment_get_page_size(m_vadjustment);
if (backward) {
if (end_row < value || end_row > value + page_size - 1)
- vte_terminal_queue_adjustment_value_changed_clamped (terminal, end_row - page_size +
1);
+ vte_terminal_queue_adjustment_value_changed_clamped(m_terminal, end_row - page_size +
1);
} else {
if (start_row < value || start_row > value + page_size - 1)
- vte_terminal_queue_adjustment_value_changed_clamped (terminal, start_row);
+ vte_terminal_queue_adjustment_value_changed_clamped(m_terminal, start_row);
}
- return TRUE;
+ return true;
}
-static gboolean
-vte_terminal_search_rows_iter (VteTerminal *terminal,
+bool
+VteTerminalPrivate::search_rows_iter(
#ifdef WITH_PCRE2
- pcre2_match_context_8 *match_context,
- pcre2_match_data_8 *match_data,
+ pcre2_match_context_8 *match_context,
+ pcre2_match_data_8 *match_data,
#endif
- long start_row,
- long end_row,
- gboolean backward)
+ vte::grid::row_t start_row,
+ vte::grid::row_t end_row,
+ bool backward)
{
const VteRowData *row;
long iter_start_row, iter_end_row;
@@ -12829,15 +12806,15 @@ vte_terminal_search_rows_iter (VteTerminal *terminal,
do {
iter_start_row--;
- row = _vte_terminal_find_row_data (terminal, iter_start_row);
+ row = _vte_terminal_find_row_data(m_terminal, iter_start_row);
} while (row && row->attr.soft_wrapped);
- if (vte_terminal_search_rows (terminal,
+ if (search_rows(
#ifdef WITH_PCRE2
match_context, match_data,
#endif
iter_start_row, iter_end_row, backward))
- return TRUE;
+ return true;
}
} else {
iter_end_row = start_row;
@@ -12845,40 +12822,35 @@ vte_terminal_search_rows_iter (VteTerminal *terminal,
iter_start_row = iter_end_row;
do {
- row = _vte_terminal_find_row_data (terminal, iter_end_row);
+ row = _vte_terminal_find_row_data(m_terminal, iter_end_row);
iter_end_row++;
} while (row && row->attr.soft_wrapped);
- if (vte_terminal_search_rows (terminal,
+ if (search_rows(
#ifdef WITH_PCRE2
match_context, match_data,
#endif
iter_start_row, iter_end_row, backward))
- return TRUE;
+ return true;
}
}
- return FALSE;
+ return false;
}
-static gboolean
-vte_terminal_search_find (VteTerminal *terminal,
- gboolean backward)
+bool
+VteTerminalPrivate::search_find (bool backward)
{
- VteTerminalPrivate *pvt;
- long buffer_start_row, buffer_end_row;
- long last_start_row, last_end_row;
- gboolean match_found = TRUE;
+ vte::grid::row_t buffer_start_row, buffer_end_row;
+ vte::grid::row_t last_start_row, last_end_row;
+ bool match_found = false;
#ifdef WITH_PCRE2
- pcre2_match_context_8 *match_context = NULL;
- pcre2_match_data_8 *match_data = NULL;
+ pcre2_match_context_8 *match_context = nullptr;
+ pcre2_match_data_8 *match_data = nullptr;
#endif
- g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
-
- pvt = terminal->pvt;
- if (pvt->search_regex.mode == VTE_REGEX_UNDECIDED)
- return FALSE;
+ if (m_search_regex.mode == VTE_REGEX_UNDECIDED)
+ return false;
/* TODO
* Currently We only find one result per extended line, and ignore columns
@@ -12886,21 +12858,21 @@ vte_terminal_search_find (VteTerminal *terminal,
*/
#ifdef WITH_PCRE2
- if (G_LIKELY(pvt->search_regex.mode == VTE_REGEX_PCRE2)) {
- match_context = pvt->create_match_context();
- match_data = pcre2_match_data_create_8(256 /* should be plenty */, NULL /* general context
*/);
+ if (G_LIKELY(m_search_regex.mode == VTE_REGEX_PCRE2)) {
+ match_context = create_match_context();
+ match_data = pcre2_match_data_create_8(256 /* should be plenty */, nullptr /* general
context */);
}
#endif
- buffer_start_row = _vte_ring_delta (terminal->pvt->screen->row_data);
- buffer_end_row = _vte_ring_next (terminal->pvt->screen->row_data);
+ buffer_start_row = _vte_ring_delta (m_screen->row_data);
+ buffer_end_row = _vte_ring_next (m_screen->row_data);
- if (pvt->has_selection) {
- last_start_row = pvt->selection_start.row;
- last_end_row = pvt->selection_end.row + 1;
+ if (m_has_selection) {
+ last_start_row = m_selection_start.row;
+ last_end_row = m_selection_end.row + 1;
} else {
- last_start_row = pvt->screen->scroll_delta + terminal->pvt->row_count;
- last_end_row = pvt->screen->scroll_delta;
+ last_start_row = m_screen->scroll_delta + m_row_count;
+ last_end_row = m_screen->scroll_delta;
}
last_start_row = MAX (buffer_start_row, last_start_row);
last_end_row = MIN (buffer_end_row, last_end_row);
@@ -12908,55 +12880,55 @@ vte_terminal_search_find (VteTerminal *terminal,
/* If search fails, we make an empty selection at the last searched
* position... */
if (backward) {
- if (vte_terminal_search_rows_iter (terminal,
+ if (search_rows_iter (
#ifdef WITH_PCRE2
match_context, match_data,
#endif
buffer_start_row, last_start_row, backward))
goto found;
- if (pvt->search_wrap_around &&
- vte_terminal_search_rows_iter (terminal,
+ if (m_search_wrap_around &&
+ search_rows_iter (
#ifdef WITH_PCRE2
match_context, match_data,
#endif
last_end_row, buffer_end_row, backward))
goto found;
- if (pvt->has_selection) {
- if (pvt->search_wrap_around)
- _vte_terminal_select_empty_at (terminal,
- pvt->selection_start.col,
- pvt->selection_start.row);
+ if (m_has_selection) {
+ if (m_search_wrap_around)
+ _vte_terminal_select_empty_at (m_terminal,
+ m_selection_start.col,
+ m_selection_start.row);
else
- _vte_terminal_select_empty_at (terminal,
+ _vte_terminal_select_empty_at (m_terminal,
-1,
buffer_start_row - 1);
}
- match_found = FALSE;
+ match_found = false;
} else {
- if (vte_terminal_search_rows_iter (terminal,
+ if (search_rows_iter (
#ifdef WITH_PCRE2
match_context, match_data,
#endif
last_end_row, buffer_end_row, backward))
goto found;
- if (pvt->search_wrap_around &&
- vte_terminal_search_rows_iter (terminal,
+ if (m_search_wrap_around &&
+ search_rows_iter (
#ifdef WITH_PCRE2
match_context, match_data,
#endif
buffer_start_row, last_start_row, backward))
goto found;
- if (pvt->has_selection) {
- if (pvt->search_wrap_around)
- _vte_terminal_select_empty_at (terminal,
- pvt->selection_end.col + 1,
- pvt->selection_end.row);
+ if (m_has_selection) {
+ if (m_search_wrap_around)
+ _vte_terminal_select_empty_at (m_terminal,
+ m_selection_end.col + 1,
+ m_selection_end.row);
else
- _vte_terminal_select_empty_at (terminal,
+ _vte_terminal_select_empty_at (m_terminal,
-1,
buffer_end_row);
}
- match_found = FALSE;
+ match_found = false;
}
found:
@@ -12971,36 +12943,6 @@ vte_terminal_search_find (VteTerminal *terminal,
return match_found;
}
-/**
- * vte_terminal_search_find_previous:
- * @terminal: a #VteTerminal
- *
- * Searches the previous string matching the search regex set with
- * vte_terminal_search_set_gregex().
- *
- * Returns: %TRUE if a match was found
- */
-gboolean
-vte_terminal_search_find_previous (VteTerminal *terminal)
-{
- return vte_terminal_search_find (terminal, TRUE);
-}
-
-/**
- * vte_terminal_search_find_next:
- * @terminal: a #VteTerminal
- *
- * Searches the next string matching the search regex set with
- * vte_terminal_search_set_gregex().
- *
- * Returns: %TRUE if a match was found
- */
-gboolean
-vte_terminal_search_find_next (VteTerminal *terminal)
-{
- return vte_terminal_search_find (terminal, FALSE);
-}
-
/*
* VteTerminalPrivate::set_input_enabled:
* @enabled: whether to enable user input
diff --git a/src/vtegtk.cc b/src/vtegtk.cc
index 90e1b5b..5ed3d02 100644
--- a/src/vtegtk.cc
+++ b/src/vtegtk.cc
@@ -1512,6 +1512,69 @@ vte_get_user_shell (void)
/* VteTerminal public API */
+/**
+ * vte_terminal_search_find_previous:
+ * @terminal: a #VteTerminal
+ *
+ * Searches the previous string matching the search regex set with
+ * vte_terminal_search_set_gregex().
+ *
+ * Returns: %TRUE if a match was found
+ */
+gboolean
+vte_terminal_search_find_previous (VteTerminal *terminal)
+{
+ g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+ return terminal->pvt->search_find(true);
+}
+
+/**
+ * vte_terminal_search_find_next:
+ * @terminal: a #VteTerminal
+ *
+ * Searches the next string matching the search regex set with
+ * vte_terminal_search_set_gregex().
+ *
+ * Returns: %TRUE if a match was found
+ */
+gboolean
+vte_terminal_search_find_next (VteTerminal *terminal)
+{
+ g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+ return terminal->pvt->search_find(false);
+}
+
+/**
+ * vte_terminal_search_set_wrap_around:
+ * @terminal: a #VteTerminal
+ * @wrap_around: whether search should wrap
+ *
+ * Sets whether search should wrap around to the beginning of the
+ * terminal content when reaching its end.
+ */
+void
+vte_terminal_search_set_wrap_around (VteTerminal *terminal,
+ gboolean wrap_around)
+{
+ g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+ terminal->pvt->search_set_wrap_around(wrap_around != FALSE);
+}
+
+/**
+ * vte_terminal_search_get_wrap_around:
+ * @terminal: a #VteTerminal
+ *
+ * Returns: whether searching will wrap around
+ */
+gboolean
+vte_terminal_search_get_wrap_around (VteTerminal *terminal)
+{
+ g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+
+ return terminal->pvt->search_wrap_around;
+}
+
/* Just some arbitrary minimum values */
#define MIN_COLUMNS (16)
#define MIN_ROWS (2)
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index 2095338..f982b65 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -573,6 +573,25 @@ public:
void feed_focus_event(bool in);
void maybe_feed_focus_event(bool in);
+ bool search_rows(
+#ifdef WITH_PCRE2
+ pcre2_match_context_8 *match_context,
+ pcre2_match_data_8 *match_data,
+#endif
+ vte::grid::row_t start_row,
+ vte::grid::row_t end_row,
+ bool backward);
+ bool search_rows_iter(
+#ifdef WITH_PCRE2
+ pcre2_match_context_8 *match_context,
+ pcre2_match_data_8 *match_data,
+#endif
+ vte::grid::row_t start_row,
+ vte::grid::row_t end_row,
+ bool backward);
+ bool search_find(bool backward);
+ bool search_set_wrap_around(bool wrap);
+
bool process_word_char_exceptions(char const *str,
gunichar **arrayp,
gsize *lenp);
@@ -726,5 +745,6 @@ public:
#define m_icon_title icon_title
#define m_selection_start selection_start
#define m_selection_end selection_end
+#define m_search_wrap_around search_wrap_around
extern GTimer *process_timer;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]