rendered paste body#include <gtk/gtk.h>
#include <string.h>
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;
}