#include #include GtkWidget *view; static void print(const char *text) { gtk_text_buffer_insert_at_cursor(gtk_text_view_get_buffer(GTK_TEXT_VIEW(view)), text, strlen(text)); gtk_text_buffer_insert_at_cursor(gtk_text_view_get_buffer(GTK_TEXT_VIEW(view)), "\n\n", 2); } static gboolean grab_focus(gpointer null) { gtk_widget_grab_focus(view); return FALSE; } static gboolean mouse_action(const char *text) { print(text); g_timeout_add(0, grab_focus, NULL);; return FALSE; } int main() { gtk_init(NULL, NULL); GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL), *label; GtkWidget *notebook = gtk_notebook_new(); gtk_container_add(GTK_CONTAINER(win), notebook); GtkWidget *page = gtk_vbox_new(FALSE, 0); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page, label = gtk_label_new("Page 1")); page = gtk_vbox_new(FALSE, 0); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page, label = gtk_label_new("Page 2")); view = gtk_text_view_new(); gtk_container_add(GTK_CONTAINER(page), view); g_signal_connect_swapped(G_OBJECT(notebook), "button_press_event", G_CALLBACK(mouse_action), "mouse down"); g_signal_connect_swapped(G_OBJECT(notebook), "focus_tab", G_CALLBACK(print), "focus-tab"); g_signal_connect_swapped(G_OBJECT(notebook), "select_page", G_CALLBACK(print), "select-page"); g_signal_connect_swapped(G_OBJECT(notebook), "switch_page", G_CALLBACK(print), "switch-page"); gtk_widget_show_all(win); gtk_main(); return 0; }