[vte] widget: Move some public API to its own file



commit 13b9d230f9e2085c96eb8d627b36e9048b72632e
Author: Christian Persch <chpe gnome org>
Date:   Wed Nov 18 21:15:43 2015 +0100

    widget: Move some public API to its own file

 src/vte.cc         |   86 ++++++++++++++++++----------------------------------
 src/vtegtk.cc      |   30 ++++++++++++++++++
 src/vteinternal.hh |    1 +
 3 files changed, 61 insertions(+), 56 deletions(-)
---
diff --git a/src/vte.cc b/src/vte.cc
index 90c6273..f36c402 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -11318,86 +11318,60 @@ _vte_terminal_decscusr_cursor_shape(VteTerminal *terminal)
         }
 }
 
-/**
- * vte_terminal_set_scrollback_lines:
- * @terminal: a #VteTerminal
- * @lines: the length of the history buffer
- *
- * Sets the length of the scrollback buffer used by the terminal.  The size of
- * the scrollback buffer will be set to the larger of this value and the number
- * of visible rows the widget can display, so 0 can safely be used to disable
- * scrollback.
- *
- * A negative value means "infinite scrollback".
- *
- * Note that this setting only affects the normal screen buffer.
- * No scrollback is allowed on the alternate screen buffer.
- */
-void
-vte_terminal_set_scrollback_lines(VteTerminal *terminal, glong lines)
+bool
+VteTerminalPrivate::set_scrollback_lines(long lines)
 {
-        VteTerminalPrivate *pvt;
-        GObject *object;
         glong low, high, next;
         double scroll_delta;
-       VteScreen *screen;
-
-       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       VteScreen *scrn;
 
        if (lines < 0)
                lines = G_MAXLONG;
 
-        object = G_OBJECT(terminal);
-        pvt = terminal->pvt;
-
 #if 0
         /* FIXME: this breaks the scrollbar range, bug #562511 */
-        if (lines == pvt->scrollback_lines)
-                return;
+        if (lines == m_scrollback_lines)
+                return false;
 #endif
 
-        g_object_freeze_notify(object);
-
        _vte_debug_print (VTE_DEBUG_MISC,
                        "Setting scrollback lines to %ld\n", lines);
 
-       pvt->scrollback_lines = lines;
+       m_scrollback_lines = lines;
 
         /* The main screen gets the full scrollback buffer. */
-        screen = &terminal->pvt->normal_screen;
-        lines = MAX (lines, terminal->pvt->row_count);
-        next = MAX (terminal->pvt->cursor.row + 1,
-                    _vte_ring_next (screen->row_data));
-        _vte_ring_resize (screen->row_data, lines);
-        low = _vte_ring_delta (screen->row_data);
-        high = lines + MIN (G_MAXLONG - lines, low - terminal->pvt->row_count + 1);
-        screen->insert_delta = CLAMP (screen->insert_delta, low, high);
-        screen->scroll_delta = CLAMP (screen->scroll_delta, low, screen->insert_delta);
-        next = MIN (next, screen->insert_delta + terminal->pvt->row_count);
-        if (_vte_ring_next (screen->row_data) > next){
-                _vte_ring_shrink (screen->row_data, next - low);
+        scrn = &m_normal_screen;
+        lines = MAX (lines, m_row_count);
+        next = MAX (m_cursor.row + 1,
+                    _vte_ring_next (scrn->row_data));
+        _vte_ring_resize (scrn->row_data, lines);
+        low = _vte_ring_delta (scrn->row_data);
+        high = lines + MIN (G_MAXLONG - lines, low - m_row_count + 1);
+        scrn->insert_delta = CLAMP (scrn->insert_delta, low, high);
+        scrn->scroll_delta = CLAMP (scrn->scroll_delta, low, scrn->insert_delta);
+        next = MIN (next, scrn->insert_delta + m_row_count);
+        if (_vte_ring_next (scrn->row_data) > next){
+                _vte_ring_shrink (scrn->row_data, next - low);
         }
 
-        /* The alternate screen isn't allowed to scroll at all. */
-        screen = &terminal->pvt->alternate_screen;
-        _vte_ring_resize (screen->row_data, terminal->pvt->row_count);
-        screen->scroll_delta = _vte_ring_delta (screen->row_data);
-        screen->insert_delta = _vte_ring_delta (screen->row_data);
-        if (_vte_ring_next (screen->row_data) > screen->insert_delta + terminal->pvt->row_count){
-                _vte_ring_shrink (screen->row_data, terminal->pvt->row_count);
+        /* The alternate scrn isn't allowed to scroll at all. */
+        scrn = &m_alternate_screen;
+        _vte_ring_resize (scrn->row_data, m_row_count);
+        scrn->scroll_delta = _vte_ring_delta (scrn->row_data);
+        scrn->insert_delta = _vte_ring_delta (scrn->row_data);
+        if (_vte_ring_next (scrn->row_data) > scrn->insert_delta + m_row_count){
+                _vte_ring_shrink (scrn->row_data, m_row_count);
         }
 
        /* Adjust the scrollbar to the new location. */
        /* Hack: force a change in scroll_delta even if the value remains, so that
           vte_term_q_adj_val_changed() doesn't shortcut to no-op, see bug 676075. */
-        scroll_delta = terminal->pvt->screen->scroll_delta;
-       terminal->pvt->screen->scroll_delta = -1;
-       vte_terminal_queue_adjustment_value_changed (terminal, scroll_delta);
-       _vte_terminal_adjust_adjustments_full (terminal);
-
-        g_object_notify(object, "scrollback-lines");
+        scroll_delta = m_screen->scroll_delta;
+       m_screen->scroll_delta = -1;
+       vte_terminal_queue_adjustment_value_changed(m_terminal, scroll_delta);
+       _vte_terminal_adjust_adjustments_full(m_terminal);
 
-        g_object_thaw_notify(object);
+        return true;
 }
 
 bool
diff --git a/src/vtegtk.cc b/src/vtegtk.cc
index fb821de..e666292 100644
--- a/src/vtegtk.cc
+++ b/src/vtegtk.cc
@@ -1977,6 +1977,36 @@ vte_terminal_get_row_count(VteTerminal *terminal)
 }
 
 /**
+ * vte_terminal_set_scrollback_lines:
+ * @terminal: a #VteTerminal
+ * @lines: the length of the history buffer
+ *
+ * Sets the length of the scrollback buffer used by the terminal.  The size of
+ * the scrollback buffer will be set to the larger of this value and the number
+ * of visible rows the widget can display, so 0 can safely be used to disable
+ * scrollback.
+ *
+ * A negative value means "infinite scrollback".
+ *
+ * Note that this setting only affects the normal screen buffer.
+ * No scrollback is allowed on the alternate screen buffer.
+ */
+void
+vte_terminal_set_scrollback_lines(VteTerminal *terminal, glong lines)
+{
+        g_return_if_fail(VTE_IS_TERMINAL(terminal));
+        g_return_if_fail(lines >= -1);
+
+        GObject *object = G_OBJECT(terminal);
+        g_object_freeze_notify(object);
+
+        if (terminal->pvt->set_scrollback_lines(lines))
+                g_object_notify_by_pspec(object, pspecs[PROP_SCROLLBACK_LINES]);
+
+        g_object_thaw_notify(object);
+}
+
+/**
  * vte_terminal_get_window_title:
  * @terminal: a #VteTerminal
  *
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index b3dafa1..b9f8204 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -613,6 +613,7 @@ public:
         bool set_input_enabled(bool enabled);
         bool set_mouse_autohide(bool autohide);
         bool set_pty(VtePty *pty);
+        bool set_scrollback_lines(long lines);
         bool set_word_char_exceptions(char const* exceptions);
 
         bool write_contents_sync (GOutputStream *stream,


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