return 0;
}
+static void
+tilda_window_show_hide_tabs_if_appropriate (TildaWindow *self)
+{
+ debug_enter ();
+ debug_assert (TILDA_IS_WINDOW(self));
+
+ /* If we only have one tab, we have a choice to make, otherwise, always show tabs */
+ if (gtk_notebook_get_n_pages (GTK_NOTEBOOK(self->notebook)) <= 1)
+ {
+ if (self->always_show_tabs)
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK(self->notebook), TRUE);
+ else
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK(self->notebook), FALSE);
+ }
+ else
+ {
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK(self->notebook), TRUE);
+ }
+}
+
/**
* Clean up and remove self completely from the program
*
g_ptr_array_add (self->terms, tt);
label = gtk_label_new ("Tilda");
- notebook_index = gtk_notebook_prepend_page (GTK_NOTEBOOK(self->notebook), tt->hbox, label);
+ notebook_index = gtk_notebook_append_page (GTK_NOTEBOOK(self->notebook), tt->hbox, label);
gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK(self->notebook), tt->hbox,
self->full_width_tabs, TRUE, GTK_PACK_START);
gtk_notebook_set_current_page (GTK_NOTEBOOK(self->notebook), notebook_index);
- if (gtk_notebook_get_n_pages (GTK_NOTEBOOK(self->notebook)) > 1)
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK(self->notebook), TRUE);
+ /* Always show tabs if we have > 1 tab open */
+ tilda_window_show_hide_tabs_if_appropriate (self);
/* Focus the VTE Terminal */
gtk_widget_grab_focus (tt->vte_term);
gtk_notebook_remove_page (GTK_NOTEBOOK (self->notebook), notebook_index);
/* We should hide the tabs if there is only one tab left */
- if (gtk_notebook_get_n_pages (GTK_NOTEBOOK (self->notebook)) == 1)
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (self->notebook), FALSE);
+ tilda_window_show_hide_tabs_if_appropriate (self);
/* Remove the term from our lists, then free it */
g_ptr_array_remove_fast (self->terms, tt);
debug_enter ();
debug_assert (TILDA_IS_WINDOW(self));
- if (self->terms->len > (number - 1))
- {
- gint temp = self->terms->len - number;
- gtk_notebook_set_current_page (GTK_NOTEBOOK(self->notebook), temp);
- }
+ gtk_notebook_set_current_page (GTK_NOTEBOOK(self->notebook), number-1);
/* Do not keep propagating */
return TRUE;
TILDA_WINDOW_CENTERED_HORIZONTALLY,
TILDA_WINDOW_CENTERED_VERTICALLY,
TILDA_WINDOW_FULL_WIDTH_TABS,
+ TILDA_WINDOW_ALWAYS_SHOW_TABS,
+ TILDA_WINDOW_ALWAYS_SHOW_BORDER,
TILDA_WINDOW_HAVE_REAL_TRANSPARENCY,
};
debug_printf ("window full width tabs: %d\n", self->full_width_tabs);
break;
+ case TILDA_WINDOW_ALWAYS_SHOW_TABS:
+ self->always_show_tabs = g_value_get_boolean (value);
+ tilda_window_show_hide_tabs_if_appropriate (self);
+ debug_printf ("window always show tabs: %d\n", self->always_show_tabs);
+ break;
+
+ case TILDA_WINDOW_ALWAYS_SHOW_BORDER:
+ self->always_show_border = g_value_get_boolean (value);
+ gtk_notebook_set_show_border (GTK_NOTEBOOK(self->notebook), self->always_show_border);
+ debug_printf ("window always show border: %d\n", self->always_show_border);
+ break;
+
case TILDA_WINDOW_HAVE_REAL_TRANSPARENCY:
self->have_real_transparency = g_value_get_boolean (value);
debug_printf ("window have real transp: %d\n", self->have_real_transparency);
g_value_set_boolean (value, self->full_width_tabs);
break;
+ case TILDA_WINDOW_ALWAYS_SHOW_TABS:
+ g_value_set_boolean (value, self->always_show_tabs);
+ break;
+
+ case TILDA_WINDOW_ALWAYS_SHOW_BORDER:
+ g_value_set_boolean (value, self->always_show_border);
+ break;
+
case TILDA_WINDOW_HAVE_REAL_TRANSPARENCY:
g_value_set_boolean (value, self->have_real_transparency);
break;
tilda_window_set_property_from_config (self, "centered-horizontally");
tilda_window_set_property_from_config (self, "centered-vertically");
tilda_window_set_property_from_config (self, "full-width-tabs");
+ tilda_window_set_property_from_config (self, "always-show-tabs");
+ tilda_window_set_property_from_config (self, "always-show-border");
/* Add the initial terminal(s) */
for (i=0; i<self->initial_terminals; ++i)
TILDA_WINDOW_FULL_WIDTH_TABS,
pspec);
+ pspec = g_param_spec_boolean ("always-show-tabs",
+ _("Always show the tab bar, regardless of the number of open tabs"),
+ NULL,
+ TRUE,
+ G_PARAM_READWRITE);
+
+ g_object_class_install_property (gobject_class,
+ TILDA_WINDOW_ALWAYS_SHOW_TABS,
+ pspec);
+
+ pspec = g_param_spec_boolean ("always-show-border",
+ _("Always show the window borders, regardless of the number of open tabs"),
+ NULL,
+ TRUE,
+ G_PARAM_READWRITE);
+
+ g_object_class_install_property (gobject_class,
+ TILDA_WINDOW_ALWAYS_SHOW_BORDER,
+ pspec);
+
pspec = g_param_spec_boolean ("have-real-transparency",
NULL, NULL, FALSE, G_PARAM_READABLE);