[vte] widget: Move some methods to VteTerminalPrivate



commit 07150c4131a345f6e92a18bdd0bd399af6607dc0
Author: Christian Persch <chpe gnome org>
Date:   Thu Jan 14 17:05:36 2016 +0100

    widget: Move some methods to VteTerminalPrivate

 src/vteinternal.hh |    6 +++-
 src/vteseq.cc      |   66 ++++++++++++++++++++++++++++++++++++---------------
 2 files changed, 50 insertions(+), 22 deletions(-)
---
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index bc38c02..9525c7c 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -1133,6 +1133,7 @@ public:
         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 vte::grid::column_t get_cursor_column() const;
         inline void reset_scrolling_region();
         inline void set_scrolling_region(vte::grid::row_t start /* relative */,
                                          vte::grid::row_t end /* relative */);
@@ -1140,8 +1141,9 @@ public:
         inline void seq_cursor_down(vte::grid::row_t rows);
         inline void seq_erase_characters(long count);
         inline void seq_insert_blank_character();
-
-
+        inline void seq_backspace();
+        inline void seq_cursor_backward(vte::grid::column_t columns);
+        inline void seq_cursor_forward(vte::grid::column_t columns);
         inline void set_keypad_mode(VteKeymode mode);
 };
 
diff --git a/src/vteseq.cc b/src/vteseq.cc
index b743de4..db080f0 100644
--- a/src/vteseq.cc
+++ b/src/vteseq.cc
@@ -1237,6 +1237,12 @@ VteTerminalPrivate::get_cursor_row() const
         return row;
 }
 
+vte::grid::column_t
+VteTerminalPrivate::get_cursor_column() const
+{
+        return m_cursor.col;
+}
+
 /*
  * VteTerminalPrivate::set_cursor_coords:
  * @row: the row. 0-based and relative to the scrolling region
@@ -1573,11 +1579,17 @@ vte_sequence_handler_index (VteTerminal *terminal, GValueArray *params)
 static void
 vte_sequence_handler_backspace (VteTerminal *terminal, GValueArray *params)
 {
-        terminal->pvt->ensure_cursor_is_onscreen();
+        terminal->pvt->seq_backspace();
+}
 
-        if (terminal->pvt->cursor.col > 0) {
+void
+VteTerminalPrivate::seq_backspace()
+{
+        ensure_cursor_is_onscreen();
+
+        if (m_cursor.col > 0) {
                /* There's room to move left, so do so. */
-                terminal->pvt->cursor.col--;
+                m_cursor.col--;
        }
 }
 
@@ -1588,40 +1600,54 @@ vte_sequence_handler_cursor_backward (VteTerminal *terminal, GValueArray *params
         GValue *value;
         long val;
 
-        terminal->pvt->ensure_cursor_is_onscreen();
-
         val = 1;
         if (params != NULL && params->n_values >= 1) {
                 value = g_value_array_get_nth(params, 0);
                 if (G_VALUE_HOLDS_LONG(value)) {
-                        val = MAX(g_value_get_long(value), 1);
+                        val = g_value_get_long(value);
                 }
         }
-        terminal->pvt->cursor.col = MAX(terminal->pvt->cursor.col - val, 0);
+
+        terminal->pvt->seq_cursor_forward(val);
+}
+
+void
+VteTerminalPrivate::seq_cursor_backward(vte::grid::column_t columns)
+{
+        ensure_cursor_is_onscreen();
+
+        auto col = get_cursor_column();
+        columns = CLAMP(columns, 1, col);
+        set_cursor_column(col - columns);
 }
 
 /* Cursor right N columns. */
 static void
 vte_sequence_handler_cursor_forward (VteTerminal *terminal, GValueArray *params)
 {
-        GValue *value;
-        long val;
-
-        terminal->pvt->ensure_cursor_is_onscreen();
-
-        val = 1;
+        long val = 1;
         if (params != NULL && params->n_values >= 1) {
-                value = g_value_array_get_nth(params, 0);
+                GValue* value = g_value_array_get_nth(params, 0);
                 if (G_VALUE_HOLDS_LONG(value)) {
-                        val = CLAMP(g_value_get_long(value),
-                                    1, terminal->pvt->column_count);
+                        val = g_value_get_long(value);
                 }
         }
+
+        terminal->pvt->seq_cursor_forward(val);
+}
+
+void
+VteTerminalPrivate::seq_cursor_forward(vte::grid::column_t columns)
+{
+        columns = CLAMP(columns, 1, m_column_count);
+
+        ensure_cursor_is_onscreen();
+
         /* The cursor can be further to the right, don't move in that case. */
-        if (terminal->pvt->cursor.col < terminal->pvt->column_count) {
+        auto col = get_cursor_column();
+        if (col < m_column_count) {
                /* There's room to move right. */
-                terminal->pvt->cursor.col = MIN(terminal->pvt->cursor.col + val,
-                                                terminal->pvt->column_count - 1);
+                set_cursor_column(col + columns);
        }
 }
 
@@ -1629,7 +1655,7 @@ vte_sequence_handler_cursor_forward (VteTerminal *terminal, GValueArray *params)
 static void
 vte_sequence_handler_next_line (VteTerminal *terminal, GValueArray *params)
 {
-        terminal->pvt->cursor.col = 0;
+        terminal->pvt->set_cursor_column(0);
        terminal->pvt->cursor_down();
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]