diff --git a/terminal/terminal-preferences-dialog.c b/terminal/terminal-preferences-dialog.c index 9be0826..524e584 100644 --- a/terminal/terminal-preferences-dialog.c +++ b/terminal/terminal-preferences-dialog.c @@ -137,9 +137,9 @@ terminal_preferences_dialog_init (TerminalPreferencesDialog *dialog) const gchar *props_active[] = { "title-mode", "command-login-shell", "command-update-records", "scrolling-single-line", "scrolling-on-output", "scrolling-on-keystroke", - "scrolling-bar", "font-allow-bold", - "misc-menubar-default", "misc-toolbar-default", - "misc-borders-default", + "scrolling-bar", "scrolling-unlimited", + "font-allow-bold", "misc-menubar-default", + "misc-toolbar-default", "misc-borders-default", "shortcuts-no-mnemonics", "shortcuts-no-menukey", "binding-backspace", "binding-delete", "background-mode", "background-image-style", diff --git a/terminal/terminal-preferences.c b/terminal/terminal-preferences.c index dcb223b..7f9abb7 100644 --- a/terminal/terminal-preferences.c +++ b/terminal/terminal-preferences.c @@ -95,6 +95,7 @@ enum PROP_SCROLLING_ON_OUTPUT, PROP_SCROLLING_ON_KEYSTROKE, PROP_SCROLLING_SINGLE_LINE, + PROP_SCROLLING_UNLIMITED, PROP_SHORTCUTS_NO_MENUKEY, PROP_SHORTCUTS_NO_MNEMONICS, PROP_TITLE_INITIAL, @@ -816,6 +817,16 @@ terminal_preferences_class_init (TerminalPreferencesClass *klass) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); /** + * TerminalPreferences:scrolling-unlimited: + **/ + preferences_props[PROP_SCROLLING_UNLIMITED] = + g_param_spec_boolean ("scrolling-unlimited", + NULL, + "ScrollingUnlimited", + FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** * TerminalPreferences:scrolling-on-output: **/ preferences_props[PROP_SCROLLING_ON_OUTPUT] = diff --git a/terminal/terminal-preferences.glade b/terminal/terminal-preferences.glade index a4a9284..023495e 100644 --- a/terminal/terminal-preferences.glade +++ b/terminal/terminal-preferences.glade @@ -506,7 +506,7 @@ True False - 2 + 3 2 12 6 @@ -583,6 +583,23 @@ 2 + + + Unli_mited scrollback + False + True + True + False + This option controls whether the terminal will have no limits on scrollback. + True + True + + + True + True + 3 + + diff --git a/terminal/terminal-screen.c b/terminal/terminal-screen.c index 8831573..b9a6abf 100644 --- a/terminal/terminal-screen.c +++ b/terminal/terminal-screen.c @@ -502,6 +502,8 @@ terminal_screen_preferences_changed (TerminalPreferences *preferences, terminal_screen_update_scrolling_bar (screen); else if (strcmp ("scrolling-lines", name) == 0) terminal_screen_update_scrolling_lines (screen); + else if (strcmp ("scrolling-unlimited", name) == 0) + terminal_screen_update_scrolling_lines (screen); else if (strcmp ("scrolling-on-output", name) == 0) terminal_screen_update_scrolling_on_output (screen); else if (strcmp ("scrolling-on-keystroke", name) == 0) @@ -1116,9 +1118,13 @@ terminal_screen_update_scrolling_bar (TerminalScreen *screen) static void terminal_screen_update_scrolling_lines (TerminalScreen *screen) { - guint lines; + glong lines; + gboolean unlimited; + g_object_get (G_OBJECT (screen->preferences), "scrolling-unlimited", &unlimited, NULL); g_object_get (G_OBJECT (screen->preferences), "scrolling-lines", &lines, NULL); - vte_terminal_set_scrollback_lines (VTE_TERMINAL (screen->terminal), lines); + + /* check if the unlimited option is activated, in that case override the scrolling lines */ + vte_terminal_set_scrollback_lines (VTE_TERMINAL (screen->terminal), unlimited ? -1 : lines); }