[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: Thu, 14 Jan 2016 16:12:36 +0000 (UTC)
commit eefbe5bf990d4dd2fbb0ca3946cb3c25f379a584
Author: Christian Persch <chpe gnome org>
Date: Thu Jan 14 17:05:36 2016 +0100
widget: Move some methods to VteTerminalPrivate
src/vteinternal.hh | 3 ++
src/vteseq.cc | 99 ++++++++++++++++++++++++++++++++--------------------
2 files changed, 64 insertions(+), 38 deletions(-)
---
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index 339993f..b7dac44 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -1132,9 +1132,12 @@ public:
inline void set_cursor_row(vte::grid::row_t row /* relative to scrolling region */);
inline void set_cursor_coords(vte::grid::row_t row /* relative to scrolling region */,
vte::grid::column_t column);
+ inline vte::grid::row_t get_cursor_row() const;
inline void reset_scrolling_region();
inline void set_scrolling_region(vte::grid::row_t start /* relative */,
vte::grid::row_t end /* relative */);
+ inline void seq_cursor_up(vte::grid::row_t rows);
+ inline void seq_cursor_down(vte::grid::row_t rows);
inline void set_keypad_mode(VteKeymode mode);
};
diff --git a/src/vteseq.cc b/src/vteseq.cc
index 1f7ebca..94bf2ea 100644
--- a/src/vteseq.cc
+++ b/src/vteseq.cc
@@ -1221,6 +1221,23 @@ VteTerminalPrivate::set_cursor_row(vte::grid::row_t row)
}
/*
+ * VteTerminalPrivate::get_cursor_row:
+ *
+ * Returns: the relative cursor row, 0-based and relative to the scrolling region
+ * if set (regardless of origin mode).
+ */
+vte::grid::row_t
+VteTerminalPrivate::get_cursor_row() const
+{
+ auto row = m_cursor.row - m_screen->insert_delta;
+ /* Note that we do NOT check m_origin_mode here! */
+ if (m_scrolling_restricted) {
+ row -= m_scrolling_region.start;
+ }
+ return row;
+}
+
+/*
* VteTerminalPrivate::set_cursor_coords:
* @row: the row. 0-based and relative to the scrolling region
* @col: the column. 0-based from 0 to m_column_count - 1
@@ -1425,31 +1442,34 @@ vte_sequence_handler_delete_characters (VteTerminal *terminal, GValueArray *para
static void
vte_sequence_handler_cursor_down (VteTerminal *terminal, GValueArray *params)
{
- long end;
- VteScreen *screen;
- GValue *value;
- long val;
+ long val = 1;
+ if (params != NULL && params->n_values >= 1) {
+ GValue* value = g_value_array_get_nth(params, 0);
+ if (G_VALUE_HOLDS_LONG(value)) {
+ val = g_value_get_long(value);
+ }
+ }
- terminal->pvt->ensure_cursor_is_onscreen();
+ terminal->pvt->seq_cursor_down(val);
+}
- screen = terminal->pvt->screen;
+void
+VteTerminalPrivate::seq_cursor_down(vte::grid::row_t rows)
+{
+ rows = CLAMP(rows, 1, m_row_count);
- if (terminal->pvt->scrolling_restricted) {
- end = screen->insert_delta + terminal->pvt->scrolling_region.end;
+ // FIXMEchpe why not do this afterwards?
+ ensure_cursor_is_onscreen();
+
+ vte::grid::row_t end;
+ // FIXMEchpe why not check m_origin_mode here?
+ if (m_scrolling_restricted) {
+ end = m_screen->insert_delta + m_scrolling_region.end;
} else {
- end = screen->insert_delta + terminal->pvt->row_count - 1;
+ end = m_screen->insert_delta + m_row_count - 1;
}
- val = 1;
- if (params != NULL && params->n_values >= 1) {
- value = g_value_array_get_nth(params, 0);
- if (G_VALUE_HOLDS_LONG(value)) {
- val = CLAMP(g_value_get_long(value),
- 1, terminal->pvt->row_count);
- }
- }
-
- terminal->pvt->cursor.row = MIN(terminal->pvt->cursor.row + val, end);
+ m_cursor.row = MIN(m_cursor.row + rows, end);
}
/* Erase characters starting at the cursor position (overwriting N with
@@ -1931,31 +1951,34 @@ vte_sequence_handler_tab_clear (VteTerminal *terminal, GValueArray *params)
static void
vte_sequence_handler_cursor_up (VteTerminal *terminal, GValueArray *params)
{
- VteScreen *screen;
- long start;
- GValue *value;
- long val;
+ long val = 1;
+ if (params != NULL && params->n_values >= 1) {
+ GValue* value = g_value_array_get_nth(params, 0);
+ if (G_VALUE_HOLDS_LONG(value)) {
+ val = g_value_get_long(value);
+ }
+ }
- terminal->pvt->ensure_cursor_is_onscreen();
+ terminal->pvt->seq_cursor_up(val);
+}
- screen = terminal->pvt->screen;
+void
+VteTerminalPrivate::seq_cursor_up(vte::grid::row_t rows)
+{
+ rows = CLAMP(rows, 1, m_row_count);
- if (terminal->pvt->scrolling_restricted) {
- start = screen->insert_delta + terminal->pvt->scrolling_region.start;
+ //FIXMEchpe why not do this afterward?
+ ensure_cursor_is_onscreen();
+
+ vte::grid::row_t start;
+ //FIXMEchpe why not check m_origin_mode here?
+ if (m_scrolling_restricted) {
+ start = m_screen->insert_delta + m_scrolling_region.start;
} else {
- start = screen->insert_delta;
+ start = m_screen->insert_delta;
}
- val = 1;
- if (params != NULL && params->n_values >= 1) {
- value = g_value_array_get_nth(params, 0);
- if (G_VALUE_HOLDS_LONG(value)) {
- val = CLAMP(g_value_get_long(value),
- 1, terminal->pvt->row_count);
- }
- }
-
- terminal->pvt->cursor.row = MAX(terminal->pvt->cursor.row - val, start);
+ m_cursor.row = MAX(m_cursor.row - rows, start);
}
/* Vertical tab. */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]