[vte] widget: Move some public API to its own file
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vte] widget: Move some public API to its own file
- Date: Wed, 18 Nov 2015 20:20:37 +0000 (UTC)
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]