summaryrefslogtreecommitdiff
path: root/gtk/gtk_tabs.c
diff options
context:
space:
mode:
authorRob Kendrick <rjek@netsurf-browser.org>2009-04-20 20:31:13 +0000
committerRob Kendrick <rjek@netsurf-browser.org>2009-04-20 20:31:13 +0000
commitec034af671ef48d131ea749870120e3c8ba12319 (patch)
tree76dd9288b85bca0a40d402ba4b9934b6524f0ad0 /gtk/gtk_tabs.c
parentf4757102b6604428b8137d049b8783de199fb015 (diff)
downloadnetsurf-ec034af671ef48d131ea749870120e3c8ba12319.tar.gz
netsurf-ec034af671ef48d131ea749870120e3c8ba12319.tar.bz2
Apply contributions from Mark Benjamin and Chris Tarnowski, with some reworking from me. Beware; glade nastyness ahead.
svn path=/trunk/netsurf/; revision=7136
Diffstat (limited to 'gtk/gtk_tabs.c')
-rw-r--r--gtk/gtk_tabs.c42
1 files changed, 31 insertions, 11 deletions
diff --git a/gtk/gtk_tabs.c b/gtk/gtk_tabs.c
index 3e495af1d..b54f3cfb9 100644
--- a/gtk/gtk_tabs.c
+++ b/gtk/gtk_tabs.c
@@ -17,11 +17,13 @@
*/
#include <glade/glade.h>
+#include <string.h>
#include "gtk/gtk_window.h"
#include "gtk/gtk_gui.h"
#include "desktop/browser.h"
#include "content/content.h"
#include "desktop/options.h"
+#include "utils/utils.h"
#include "gtk/options.h"
#include "gtk/gtk_tabs.h"
@@ -54,18 +56,32 @@ void nsgtk_tab_init(GtkWidget *tabs)
nsgtk_tab_options_changed(tabs);
}
-void nsgtk_tab_add(struct gui_window *window)
+void nsgtk_tab_add(struct gui_window *window, bool background)
{
- GtkNotebook *tabs = nsgtk_scaffolding_get_notebook(window);
+ GtkWidget *tabs = GTK_WIDGET(nsgtk_scaffolding_get_notebook(window));
GtkWidget *tabBox = nsgtk_tab_label_setup(window);
-
- gtk_notebook_append_page(tabs,
- GTK_WIDGET(window->scrolledwindow),
- tabBox);
-
+ gint remember = gtk_notebook_get_current_page(GTK_NOTEBOOK(tabs));
+ gtk_notebook_append_page(GTK_NOTEBOOK(tabs),
+ GTK_WIDGET(window->scrolledwindow), tabBox);
+ /*causes gtk errors can't set a parent
+ gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(tabs),
+ GTK_WIDGET(window->scrolledwindow), true); */
gtk_widget_show_all(GTK_WIDGET(window->scrolledwindow));
-
- gtk_notebook_set_current_page(tabs, gtk_notebook_get_n_pages(tabs) - 1);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(tabs),
+ gtk_notebook_get_n_pages(GTK_NOTEBOOK(tabs)) - 1);
+ if (option_new_blank) {
+ /*char *blankpage = malloc(strlen(res_dir_location) +
+ SLEN("file:///blankpage") + 1);
+ blankpage = g_strconcat("file:///", res_dir_location,
+ "blankpage", NULL); */
+ /* segfaults
+ struct browser_window *bw = nsgtk_get_browser_for_gui(window);
+ browser_window_go(bw, blankpage, 0, true); */
+ /* free(blankpage); */
+ }
+ if (background)
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(tabs), remember);
+ gtk_widget_grab_focus(GTK_WIDGET(window->scaffold->url_bar));
}
void nsgtk_tab_visibility_update(GtkNotebook *notebook, GtkWidget *child,
@@ -97,7 +113,10 @@ GtkWidget *nsgtk_tab_label_setup(struct gui_window *window)
hbox = gtk_hbox_new(FALSE, 2);
- label = gtk_label_new("Loading...");
+ if (option_new_blank == true)
+ label = gtk_label_new("New Tab");
+ else
+ label = gtk_label_new("Loading...");
gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END);
gtk_label_set_single_line_mode(GTK_LABEL(label), TRUE);
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
@@ -178,6 +197,7 @@ void nsgtk_tab_close_current(GtkNotebook *notebook)
if (gtk_notebook_get_n_pages(notebook) < 2)
return; /* wicked things happen if we close the last tab */
- gtk_notebook_remove_page(notebook, curr_page);
nsgtk_window_destroy_browser(gw);
+ /* deletes 2 notebook tabs at a time!
+ gtk_notebook_remove_page(notebook, curr_page); */
}