[vte] widget: Move some methods to VteTerminalPrivate



commit 98da36037b6401b423a7f3bcc3c44c9ce20f14d5
Author: Christian Persch <chpe gnome org>
Date:   Thu Jan 14 17:05:34 2016 +0100

    widget: Move some methods to VteTerminalPrivate

 src/vteinternal.hh |    3 +++
 src/vteseq.cc      |   34 ++++++++++++++++++++++++----------
 2 files changed, 27 insertions(+), 10 deletions(-)
---
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index 650f96a..ed20864 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -1107,6 +1107,9 @@ public:
         inline void seq_clear_current_line();
         inline void seq_clear_above_current();
         inline void seq_scroll_text(vte::grid::row_t scroll_amount);
+        inline void seq_switch_screen(VteScreen *new_screen);
+        inline void seq_normal_screen();
+        inline void seq_alternate_screen();
 };
 
 #define m_invalidated_all invalidated_all
diff --git a/src/vteseq.cc b/src/vteseq.cc
index 8608a80..403193c 100644
--- a/src/vteseq.cc
+++ b/src/vteseq.cc
@@ -366,26 +366,40 @@ vte_sequence_handler_save_cursor (VteTerminal *terminal, GValueArray *params)
 static void
 vte_sequence_handler_normal_screen (VteTerminal *terminal, GValueArray *params)
 {
+        terminal->pvt->seq_normal_screen();
+}
+
+void
+VteTerminalPrivate::seq_normal_screen()
+{
+        seq_switch_screen(&m_normal_screen);
+}
+
+void
+VteTerminalPrivate::seq_switch_screen(VteScreen *new_screen)
+{
+        /* if (new_screen == m_screen) return; ? */
+
         /* cursor.row includes insert_delta, adjust accordingly */
-        terminal->pvt->cursor.row -= terminal->pvt->screen->insert_delta;
-        terminal->pvt->screen = &terminal->pvt->normal_screen;
-        terminal->pvt->cursor.row += terminal->pvt->screen->insert_delta;
+        m_cursor.row -= m_screen->insert_delta;
+        m_screen = new_screen;
+        m_cursor.row += m_screen->insert_delta;
 
         /* Make sure the ring is large enough */
-        terminal->pvt->ensure_row();
+        ensure_row();
 }
 
 /* Switch to alternate screen. */
 static void
 vte_sequence_handler_alternate_screen (VteTerminal *terminal, GValueArray *params)
 {
-        /* cursor.row includes insert_delta, adjust accordingly */
-        terminal->pvt->cursor.row -= terminal->pvt->screen->insert_delta;
-        terminal->pvt->screen = &terminal->pvt->alternate_screen;
-        terminal->pvt->cursor.row += terminal->pvt->screen->insert_delta;
+        terminal->pvt->seq_alternate_screen();
+}
 
-        /* Make sure the ring is large enough */
-        terminal->pvt->ensure_row();
+void
+VteTerminalPrivate::seq_alternate_screen()
+{
+        seq_switch_screen(&m_alternate_screen);
 }
 
 /* Switch to normal screen and restore cursor (in this order). */


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