diff -Naur sakura-2.4.2/src/sakura.c sakura/src/sakura.c --- sakura-2.4.2/src/sakura.c 2011-07-30 23:35:11.000000000 +0400 +++ sakura/src/sakura.c 2011-10-22 02:19:49.492968736 +0400 @@ -162,6 +162,7 @@ bool first_tab; bool show_scrollbar; bool show_closebutton; + bool tabs_on_bottom; bool audible_bell; bool visible_bell; bool blinking_cursor; @@ -289,6 +290,7 @@ static void sakura_copy(GtkWidget *, void *); static void sakura_paste(GtkWidget *, void *); static void sakura_show_first_tab (GtkWidget *widget, void *data); +static void sakura_tabs_on_bottom (GtkWidget *widget, void *data); static void sakura_show_close_button (GtkWidget *widget, void *data); static void sakura_show_scrollbar(GtkWidget *, void *); static void sakura_closebutton_clicked(GtkWidget *, void *); @@ -1167,6 +1169,24 @@ } } +static void +sakura_tabs_on_bottom (GtkWidget *widget, void *data) +{ + int page; + struct terminal *term; + + page = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook)); + term = sakura_get_page_term(sakura, page); + + if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) { + gtk_notebook_set_tab_pos(GTK_NOTEBOOK(sakura.notebook), GTK_POS_BOTTOM); + sakura_set_config_boolean("tabs_on_bottom", TRUE); + } else { + gtk_notebook_set_tab_pos(GTK_NOTEBOOK(sakura.notebook), GTK_POS_TOP); + sakura_set_config_boolean("tabs_on_bottom", FALSE); + } +} + static void sakura_show_close_button (GtkWidget *widget, void *data) @@ -1665,6 +1685,11 @@ } sakura.show_closebutton = g_key_file_get_boolean(sakura.cfg, cfg_group, "closebutton", NULL); + if (!g_key_file_has_key(sakura.cfg, cfg_group, "tabs_on_bottom", NULL)) { + sakura_set_config_boolean("tabs_on_bottom", FALSE); + } + sakura.tabs_on_bottom = g_key_file_get_boolean(sakura.cfg, cfg_group, "tabs_on_bottom", NULL); + if (!g_key_file_has_key(sakura.cfg, cfg_group, "audible_bell", NULL)) { sakura_set_config_string("audible_bell", "Yes"); } @@ -1884,7 +1909,7 @@ *item_opacity_menu, *item_show_first_tab, *item_audible_bell, *item_visible_bell, *item_blinking_cursor, *item_borderless_maximized, *item_palette, *item_palette_tango, *item_palette_linux, *item_palette_xterm, *item_palette_rxvt, - *item_show_close_button; + *item_show_close_button, *item_tabs_on_bottom; GtkAction *action_open_link, *action_copy_link, *action_new_tab, *action_set_name, *action_close_tab, *action_new_window, *action_copy, *action_paste, *action_select_font, *action_select_colors, @@ -1927,6 +1952,7 @@ item_set_title=gtk_action_create_menu_item(action_set_title); item_show_first_tab=gtk_check_menu_item_new_with_label(_("Always show tab bar")); + item_tabs_on_bottom=gtk_check_menu_item_new_with_label(_("Tabs on bottom")); item_show_close_button=gtk_check_menu_item_new_with_label(_("Show tab close button")); item_toggle_scrollbar=gtk_check_menu_item_new_with_label(_("Show scrollbar")); item_audible_bell=gtk_check_menu_item_new_with_label(_("Set audible bell")); @@ -1958,6 +1984,12 @@ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_show_close_button), FALSE); } + if (sakura.tabs_on_bottom) { + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_tabs_on_bottom), TRUE); + } else { + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_tabs_on_bottom), FALSE); + } + if (sakura.show_scrollbar) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_toggle_scrollbar), TRUE); } else { @@ -2023,6 +2055,7 @@ palette_menu=gtk_menu_new(); gtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_show_first_tab); + gtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_tabs_on_bottom); gtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_show_close_button); gtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_toggle_scrollbar); gtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_audible_bell); @@ -2060,6 +2093,7 @@ g_signal_connect(G_OBJECT(action_select_colors), "activate", G_CALLBACK(sakura_color_dialog), NULL); g_signal_connect(G_OBJECT(item_show_first_tab), "activate", G_CALLBACK(sakura_show_first_tab), NULL); + g_signal_connect(G_OBJECT(item_tabs_on_bottom), "activate", G_CALLBACK(sakura_tabs_on_bottom), NULL); g_signal_connect(G_OBJECT(item_show_close_button), "activate", G_CALLBACK(sakura_show_close_button), NULL); g_signal_connect(G_OBJECT(item_toggle_scrollbar), "activate", G_CALLBACK(sakura_show_scrollbar), NULL); g_signal_connect(G_OBJECT(item_audible_bell), "activate", G_CALLBACK(sakura_audible_bell), NULL); @@ -2234,6 +2268,10 @@ gtk_box_pack_start(GTK_BOX(tab_hbox), close_btn, FALSE, FALSE, 0); } + if (sakura.tabs_on_bottom) { + gtk_notebook_set_tab_pos(GTK_NOTEBOOK(sakura.notebook), GTK_POS_BOTTOM); + } + gtk_widget_show_all(tab_hbox); /* Init vte */