Commit 8676952168a01f8adca9079f8dc18878b6a0fde6

Authored by Perry Werneck
1 parent 3e708c90

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);
... ...