Commit 8676952168a01f8adca9079f8dc18878b6a0fde6
1 parent
3e708c90
Exists in
master
and in
4 other branches
Adding "close-tab" buttons.
Showing
1 changed file
with
24 additions
and
5 deletions
Show diff stats
src/objects/window/terminal.c
@@ -92,19 +92,38 @@ | @@ -92,19 +92,38 @@ | ||
92 | 92 | ||
93 | } | 93 | } |
94 | 94 | ||
95 | + static void on_close_tab(GtkButton *button, GtkWidget *terminal) { | ||
96 | + | ||
97 | + GtkNotebook * notebook = GTK_NOTEBOOK(gtk_widget_get_parent(terminal)); | ||
98 | + gtk_notebook_remove_page(notebook,gtk_notebook_page_num(notebook, terminal)); | ||
99 | + gtk_notebook_set_show_tabs(notebook,gtk_notebook_get_n_pages(notebook) > 1); | ||
100 | + | ||
101 | + } | ||
102 | + | ||
95 | static gint append_terminal_page(pw3270ApplicationWindow * window, GtkWidget * terminal) { | 103 | static gint append_terminal_page(pw3270ApplicationWindow * window, GtkWidget * terminal) { |
96 | 104 | ||
97 | - GtkWidget * label = gtk_label_new(v3270_get_session_name(terminal)); | 105 | + GtkWidget * label = gtk_label_new(v3270_get_session_name(terminal)); |
106 | + GtkWidget * tab = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2); | ||
107 | + GtkWidget * button = gtk_button_new_from_icon_name("window-close-symbolic",GTK_ICON_SIZE_MENU); | ||
108 | + | ||
109 | + gtk_button_set_relief(GTK_BUTTON(button),GTK_RELIEF_NONE); | ||
110 | + | ||
111 | + debug("notebook: %p", window->notebook); | ||
98 | 112 | ||
99 | g_signal_connect(G_OBJECT(terminal), "focus-in-event", G_CALLBACK(on_terminal_focus), window); | 113 | g_signal_connect(G_OBJECT(terminal), "focus-in-event", G_CALLBACK(on_terminal_focus), window); |
100 | g_signal_connect(G_OBJECT(terminal), "session_changed", G_CALLBACK(session_changed),label); | 114 | g_signal_connect(G_OBJECT(terminal), "session_changed", G_CALLBACK(session_changed),label); |
101 | - g_signal_connect(G_OBJECT(terminal),"disconnected",G_CALLBACK(disconnected),window); | ||
102 | - g_signal_connect(G_OBJECT(terminal),"connected",G_CALLBACK(connected),window); | 115 | + g_signal_connect(G_OBJECT(terminal), "disconnected", G_CALLBACK(disconnected),window); |
116 | + g_signal_connect(G_OBJECT(terminal), "connected", G_CALLBACK(connected),window); | ||
117 | + | ||
118 | + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(on_close_tab), terminal); | ||
119 | + | ||
120 | + gtk_box_pack_start(GTK_BOX(tab),label,FALSE,FALSE,0); | ||
121 | + gtk_box_pack_end(GTK_BOX(tab),button,FALSE,FALSE,0); | ||
103 | 122 | ||
104 | gtk_widget_show_all(terminal); | 123 | gtk_widget_show_all(terminal); |
105 | - gtk_widget_show_all(label); | 124 | + gtk_widget_show_all(tab); |
106 | 125 | ||
107 | - gint page = gtk_notebook_append_page(window->notebook,terminal,label); | 126 | + gint page = gtk_notebook_append_page(window->notebook,terminal,tab); |
108 | gtk_notebook_set_show_tabs(window->notebook,gtk_notebook_get_n_pages(window->notebook) > 1); | 127 | gtk_notebook_set_show_tabs(window->notebook,gtk_notebook_get_n_pages(window->notebook) > 1); |
109 | 128 | ||
110 | gtk_notebook_set_tab_detachable(window->notebook,terminal,TRUE); | 129 | gtk_notebook_set_tab_detachable(window->notebook,terminal,TRUE); |