close button on terminal tabs
- From: Paolo Borelli <pborelli katamail com>
- To: Havoc Pennington <hp redhat com>, desktop-devel-list gnome org
- Subject: close button on terminal tabs
- Date: Tue, 23 Sep 2003 19:53:52 +0200
oops... this time with a sensible subject and with desktop-devel cc'ed.
Sorry for the double mail :/
Hi Havoc,
I was thinking that it would be nice to have a close button on each tab
of the terminal, like gedit and epiphany do.
Since it seemed easy enaugh, I went ahead and created the attached
patch.
? autom4te.cache
? close_tab.patch
? help/C/gnome-terminal-C.omf.out
? help/ro/gnome-terminal-ro.omf.out
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/gnome-terminal/ChangeLog,v
retrieving revision 1.328
diff -u -p -r1.328 ChangeLog
--- ChangeLog 22 Sep 2003 23:12:09 -0000 1.328
+++ ChangeLog 23 Sep 2003 17:17:18 -0000
@@ -1,3 +1,8 @@
+2003-09-23 Paolo Borelli <pborelli katamail com>
+
+ * src/terminal-window.c (title_changed_callback), (build_tab_label),
+ (terminal_window_add_screen): add a close button to each tab.
+
2003-09-22 Mariano Su�z-Alvarez <msuarezalvarez arnet com ar>
* src/.cvsignore: added gnome-terminal.schemas.
Index: src/terminal-window.c
===================================================================
RCS file: /cvs/gnome/gnome-terminal/src/terminal-window.c,v
retrieving revision 1.77
diff -u -p -r1.77 terminal-window.c
--- src/terminal-window.c 16 Jul 2003 01:36:09 -0000 1.77
+++ src/terminal-window.c 23 Sep 2003 17:17:27 -0000
@@ -1183,21 +1183,22 @@ static void
title_changed_callback (TerminalScreen *screen,
TerminalWindow *window)
{
+ const char *title;
GtkWidget *label;
GtkWidget *mi;
-
+
+ title = terminal_screen_get_title (screen);
+
if (screen == window->priv->active_term)
- gtk_window_set_title (GTK_WINDOW (window),
- terminal_screen_get_title (screen));
+ gtk_window_set_title (GTK_WINDOW (window), title);
label = screen_get_label (screen);
- eel_ellipsizing_label_set_text (EEL_ELLIPSIZING_LABEL (label),
- terminal_screen_get_title (screen));
+ eel_ellipsizing_label_set_text (EEL_ELLIPSIZING_LABEL (label), title);
mi = screen_get_menuitem (screen);
if (mi)
gtk_label_set_text (GTK_LABEL (gtk_bin_get_child (GTK_BIN (mi))),
- terminal_screen_get_title (screen));
+ title);
}
static void
@@ -1250,6 +1251,45 @@ selection_changed_callback (TerminalScre
update_copy_sensitivity (window);
}
+static GtkWidget *
+build_tab_label (TerminalWindow *window,
+ TerminalScreen *screen)
+{
+ int h, w;
+ const char *title;
+ GtkWidget *hbox;
+ GtkWidget *label;
+ GtkWidget *closebutton;
+ GtkWidget *closeimage;
+
+ gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &w, &h);
+
+ hbox = gtk_hbox_new (FALSE, 0);
+
+ title = terminal_screen_get_title (screen);
+ label = eel_ellipsizing_label_new (title);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_misc_set_padding (GTK_MISC (label), 4, 0);
+
+ closebutton = gtk_button_new ();
+ gtk_button_set_relief (GTK_BUTTON (closebutton), GTK_RELIEF_NONE);
+ closeimage = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
+ gtk_widget_set_size_request (closebutton, w, h);
+ gtk_container_add (GTK_CONTAINER (closebutton), closeimage);
+
+ g_signal_connect (G_OBJECT (closebutton), "clicked",
+ G_CALLBACK (close_tab_callback), window);
+
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), closebutton, FALSE, FALSE, 0);
+
+ gtk_widget_show_all (hbox);
+
+ screen_set_label (screen, label);
+
+ return hbox;
+}
+
void
terminal_window_add_screen (TerminalWindow *window,
TerminalScreen *screen)
@@ -1280,13 +1320,11 @@ terminal_window_add_screen (TerminalWind
hbox = gtk_hbox_new (FALSE, 0);
scrollbar = gtk_vscrollbar_new (NULL);
- label = eel_ellipsizing_label_new (terminal_screen_get_title (screen));
- gtk_widget_show (label);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-
+
+ label = build_tab_label (window, screen);
+
screen_set_hbox (screen, hbox);
screen_set_scrollbar (screen, scrollbar);
- screen_set_label (screen, label);
g_signal_connect (G_OBJECT (screen),
"profile_set",
@@ -1327,7 +1365,7 @@ terminal_window_add_screen (TerminalWind
gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (window->priv->notebook),
hbox,
TRUE, TRUE, GTK_PACK_START);
-
+
/* ZvtTerm is a broken POS and requires this realize to get
* the size request right.
*/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]