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 | 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 | 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 | 113 | g_signal_connect(G_OBJECT(terminal), "focus-in-event", G_CALLBACK(on_terminal_focus), window); |
100 | 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 | 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 | 127 | gtk_notebook_set_show_tabs(window->notebook,gtk_notebook_get_n_pages(window->notebook) > 1); |
109 | 128 | |
110 | 129 | gtk_notebook_set_tab_detachable(window->notebook,terminal,TRUE); | ... | ... |