[vte] widget: Move some methods to VteTerminalPrivate



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]