I'm writing a little program in C on using VTE/GTK and trying to implement a scrollbar on my terminal, but the scrollbar is not showing. Here is the code:
#include <gtk/gtk.h>
#include <vte/vte.h>
static void on_terminal_scroll(GtkAdjustment *vadj, gpointer data) {
VteTerminal *terminal = VTE_TERMINAL(data);
double value = gtk_adjustment_get_value(vadj);
vte_terminal_set_scrollback_lines(terminal, (gint)value);
}
int main(int argc, char *argv[]) {
GtkWidget *window, *terminal, *scrolled_window;
GtkAdjustment *vadj;
gint scrollback_lines = 10000;
gtk_init(&argc, &argv);
// Create the main window
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 640, 480);
gtk_window_set_title(GTK_WINDOW(window), "My Terminal");
// Create the terminal widget
terminal = vte_terminal_new();
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), scrollback_lines);
vte_terminal_set_size(VTE_TERMINAL(terminal), 80, 24);
// Create the scrolled window and add the terminal to it
scrolled_window = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(terminal));
// Add the scrollbar to the scrolled window
vadj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scrolled_window));
gtk_widget_add_events(GTK_WIDGET(scrolled_window), GDK_SCROLL_MASK);
g_signal_connect(vadj, "value-changed", G_CALLBACK(on_terminal_scroll), terminal);
// Add the scrolled window to the main window and show everything
gtk_container_add(GTK_CONTAINER(window), scrolled_window);
gtk_widget_show_all(window);
// Start the main loop
gtk_main();
return 0;
}
The code isn't working and I don't know why. Any help would be greatly appreciated.