Initial scrolling changes

pull/20/head
parent 78f8a1ed52
commit e71d4c7eae

@ -22,6 +22,29 @@ void on_theme_changed(GSettings *, char *, main_window *widgets){
yon_terminal_style_update(NULL, widgets); yon_terminal_style_update(NULL, widgets);
} }
gboolean yon_adjustment_set(GtkAdjustment *adj){
gtk_adjustment_set_value(adj,0);
return G_SOURCE_CONTINUE;
}
void on_child_exited(GtkWidget *, gint, GtkAdjustment *adj){
g_idle_remove_by_data(adj);
}
void terminal_integrated_start(GtkWidget *terminal,GtkAdjustment *adj, char* command){
gchar *envv[] = { NULL };
config_str parsed=NULL;
int size=0;
g_shell_parse_argv(command, &size,&parsed, NULL);
vte_terminal_spawn_async(VTE_TERMINAL(terminal),VTE_PTY_NO_HELPER,"/bin",parsed,envv,G_SPAWN_SEARCH_PATH,NULL,NULL,NULL,20,NULL,NULL,NULL);
vte_terminal_set_size(VTE_TERMINAL(terminal),10,15);
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), -1);
gtk_widget_show_all(terminal);
g_idle_add((GSourceFunc)yon_adjustment_set,adj);
}
/**yon_main_window_complete(main_window *widgets) /**yon_main_window_complete(main_window *widgets)
* [EN] * [EN]
* *
@ -37,9 +60,11 @@ void yon_main_window_complete(main_window *widgets){
widgets->InfoIcon = yon_gtk_builder_get_widget(builder,"InfoIcon"); widgets->InfoIcon = yon_gtk_builder_get_widget(builder,"InfoIcon");
widgets->InfoTerminal = yon_gtk_builder_get_widget(builder,"InfoTerminal"); widgets->InfoTerminal = yon_gtk_builder_get_widget(builder,"InfoTerminal");
widgets->TerminalTemplateLabel = yon_gtk_builder_get_widget(builder,"TerminalTemplateLabel"); widgets->TerminalTemplateLabel = yon_gtk_builder_get_widget(builder,"TerminalTemplateLabel");
widgets->adjustment = GTK_ADJUSTMENT(gtk_builder_get_object(builder,"adjustment1"));
} }
{ {
yon_terminal_integrated_start(widgets->InfoTerminal,main_command); g_signal_connect(G_OBJECT(widgets->InfoTerminal),"eof",G_CALLBACK(on_child_exited),widgets->adjustment);
terminal_integrated_start(widgets->InfoTerminal,widgets->adjustment,main_command);
yon_terminal_style_update(NULL, widgets); yon_terminal_style_update(NULL, widgets);
GSettings *settings = g_settings_new("org.gnome.desktop.interface"); GSettings *settings = g_settings_new("org.gnome.desktop.interface");

@ -42,10 +42,14 @@ typedef struct {
GtkWidget *InfoIcon; GtkWidget *InfoIcon;
GtkWidget *InfoTerminal; GtkWidget *InfoTerminal;
GtkWidget *TerminalTemplateLabel; GtkWidget *TerminalTemplateLabel;
GtkAdjustment *adjustment;
} main_window; } main_window;
void yon_main_window_complete(main_window *widgets); void yon_main_window_complete(main_window *widgets);
void on_theme_changed(GSettings *, char *, main_window *widgets); void on_theme_changed(GSettings *, char *, main_window *widgets);
void yon_terminal_style_update(VteTerminal *, main_window *widgets); void yon_terminal_style_update(VteTerminal *, main_window *widgets);
void terminal_integrated_start(GtkWidget *terminal,GtkAdjustment *, char* command);
gboolean yon_adjustment_set(GtkAdjustment *adj);
void on_child_exited(GtkWidget *, gint, GtkAdjustment *adj);

@ -51,7 +51,6 @@
<property name="vadjustment">adjustment1</property> <property name="vadjustment">adjustment1</property>
<property name="vscroll-policy">natural</property> <property name="vscroll-policy">natural</property>
<property name="encoding">UTF-8</property> <property name="encoding">UTF-8</property>
<property name="scroll-on-keystroke">True</property>
<property name="scroll-on-output">False</property> <property name="scroll-on-output">False</property>
<style> <style>
<class name="terminal"/> <class name="terminal"/>

Loading…
Cancel
Save