Added a configuration entry to focus new tabs
This commit is contained in:
parent
93fab0fb53
commit
c9a12340dd
@ -400,7 +400,6 @@ static void _preferences_on_ok(gpointer data);
|
||||
void on_preferences(gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
PangoFontDescription * desc;
|
||||
GtkWidget * vbox;
|
||||
GtkWidget * widget;
|
||||
GtkWidget * notebook;
|
||||
@ -414,8 +413,6 @@ void on_preferences(gpointer data)
|
||||
return;
|
||||
}
|
||||
/* FIXME consider using gtk_dialog_new() */
|
||||
desc = pango_font_description_new();
|
||||
pango_font_description_set_weight(desc, PANGO_WEIGHT_BOLD);
|
||||
surfer->pr_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_resizable(GTK_WINDOW(surfer->pr_window), FALSE);
|
||||
gtk_window_set_title(GTK_WINDOW(surfer->pr_window),
|
||||
@ -429,13 +426,19 @@ void on_preferences(gpointer data)
|
||||
notebook = gtk_notebook_new();
|
||||
/* general */
|
||||
page = gtk_vbox_new(FALSE, 0);
|
||||
/* homepage */
|
||||
hbox = gtk_hbox_new(FALSE, 4);
|
||||
widget = gtk_label_new(_("Homepage:"));
|
||||
gtk_widget_modify_font(widget, desc);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
|
||||
surfer->pr_homepage = gtk_entry_new();
|
||||
gtk_box_pack_start(GTK_BOX(hbox), surfer->pr_homepage, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(page), hbox, TRUE, TRUE, 0);
|
||||
/* focus tabs */
|
||||
hbox = gtk_hbox_new(FALSE, 4);
|
||||
surfer->pr_focus_tabs = gtk_check_button_new_with_label(
|
||||
_("Focus new tabs"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), surfer->pr_focus_tabs, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(page), hbox, TRUE, TRUE, 0);
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page,
|
||||
gtk_label_new(_("General")));
|
||||
gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0);
|
||||
@ -461,13 +464,21 @@ void on_preferences(gpointer data)
|
||||
_preferences_set(surfer);
|
||||
gtk_container_add(GTK_CONTAINER(surfer->pr_window), vbox);
|
||||
gtk_widget_show_all(surfer->pr_window);
|
||||
pango_font_description_free(desc);
|
||||
}
|
||||
|
||||
static void _preferences_set(Surfer * surfer)
|
||||
{
|
||||
char const * p;
|
||||
|
||||
gtk_entry_set_text(GTK_ENTRY(surfer->pr_homepage), surfer->homepage
|
||||
!= NULL ? surfer->homepage : "");
|
||||
if((p = config_get(surfer->config, "", "focus_new_tabs")) != NULL
|
||||
&& strcmp(p, "1") == 0)
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
|
||||
surfer->pr_focus_tabs), TRUE);
|
||||
else
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
|
||||
surfer->pr_focus_tabs), FALSE);
|
||||
}
|
||||
|
||||
static gboolean _preferences_on_closex(gpointer data)
|
||||
@ -491,8 +502,7 @@ static void _preferences_on_ok(gpointer data)
|
||||
Surfer * surfer = data;
|
||||
|
||||
gtk_widget_hide(surfer->pr_window);
|
||||
free(surfer->homepage);
|
||||
surfer->homepage = strdup(gtk_entry_get_text(GTK_ENTRY(
|
||||
surfer_set_homepage(surfer, gtk_entry_get_text(GTK_ENTRY(
|
||||
surfer->pr_homepage)));
|
||||
surfer_config_save(surfer);
|
||||
}
|
||||
|
@ -54,6 +54,7 @@ struct _Surfer
|
||||
/* preferences */
|
||||
GtkWidget * pr_window;
|
||||
GtkWidget * pr_homepage;
|
||||
GtkWidget * pr_focus_tabs;
|
||||
|
||||
/* find */
|
||||
GtkWidget * fi_dialog;
|
||||
|
41
src/surfer.c
41
src/surfer.c
@ -182,6 +182,8 @@ unsigned int surfer_cnt = 0;
|
||||
static char * _config_get_filename(void);
|
||||
static int _config_load_string(Config * config, char const * variable,
|
||||
char ** value);
|
||||
static int _config_save_boolean(Config * config, char const * variable,
|
||||
gboolean value);
|
||||
static int _config_save_string(Config * config, char const * variable,
|
||||
char const * value);
|
||||
|
||||
@ -408,6 +410,14 @@ void surfer_set_fullscreen(Surfer * surfer, gboolean fullscreen)
|
||||
}
|
||||
|
||||
|
||||
/* surfer_set_homepage */
|
||||
void surfer_set_homepage(Surfer * surfer, char const * homepage)
|
||||
{
|
||||
free(surfer->homepage);
|
||||
surfer->homepage = strdup(homepage);
|
||||
}
|
||||
|
||||
|
||||
/* surfer_set_location */
|
||||
void surfer_set_location(Surfer * surfer, char const * url)
|
||||
{
|
||||
@ -591,6 +601,9 @@ int surfer_config_save(Surfer * surfer)
|
||||
return 1;
|
||||
ret |= _config_save_string(surfer->config, "homepage",
|
||||
surfer->homepage);
|
||||
ret |= _config_save_boolean(surfer->config, "focus_new_tabs",
|
||||
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
|
||||
surfer->pr_focus_tabs)));
|
||||
if(ret == 0)
|
||||
ret |= config_save(surfer->config, filename);
|
||||
free(filename);
|
||||
@ -890,23 +903,28 @@ static GtkWidget * _tab_button(Surfer * surfer, GtkWidget * widget,
|
||||
void surfer_open_tab(Surfer * surfer, char const * url)
|
||||
{
|
||||
GtkWidget * widget;
|
||||
GtkNotebook * notebook = GTK_NOTEBOOK(surfer->notebook);
|
||||
int i;
|
||||
char const * p;
|
||||
|
||||
if((widget = ghtml_new(surfer)) == NULL)
|
||||
{
|
||||
surfer_error(NULL, _("Could not initialize HTML renderer"), 0);
|
||||
return;
|
||||
}
|
||||
gtk_widget_show_all(widget); /* must be before set_current_page() */
|
||||
if(url != NULL)
|
||||
ghtml_load_url(widget, url);
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(surfer->notebook), widget,
|
||||
_tab_button(surfer, widget, _("Untitled")));
|
||||
if(gtk_notebook_get_n_pages(GTK_NOTEBOOK(surfer->notebook)) > 1)
|
||||
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(surfer->notebook),
|
||||
TRUE);
|
||||
if((i = gtk_notebook_append_page(notebook, widget, _tab_button(surfer,
|
||||
widget, _("Untitled")))) > 0)
|
||||
{
|
||||
gtk_notebook_set_show_tabs(notebook, TRUE);
|
||||
if((p = config_get(surfer->config, "", "focus_new_tabs"))
|
||||
!= NULL && strcmp(p, "1") == 0)
|
||||
gtk_notebook_set_current_page(notebook, i);
|
||||
}
|
||||
else
|
||||
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(surfer->notebook),
|
||||
FALSE);
|
||||
gtk_widget_show_all(widget);
|
||||
gtk_notebook_set_show_tabs(notebook, FALSE);
|
||||
}
|
||||
|
||||
static GtkWidget * _tab_button(Surfer * surfer, GtkWidget * widget,
|
||||
@ -1361,6 +1379,13 @@ static int _config_load_string(Config * config, char const * variable,
|
||||
}
|
||||
|
||||
|
||||
static int _config_save_boolean(Config * config, char const * variable,
|
||||
gboolean value)
|
||||
{
|
||||
return config_set(config, "", variable, value ? "1" : "0");
|
||||
}
|
||||
|
||||
|
||||
static int _config_save_string(Config * config, char const * variable,
|
||||
char const * value)
|
||||
{
|
||||
|
@ -53,6 +53,7 @@ void surfer_delete(Surfer * surfer);
|
||||
GtkWidget * surfer_get_view(Surfer * surfer);
|
||||
|
||||
void surfer_set_fullscreen(Surfer * surfer, gboolean fullscreen);
|
||||
void surfer_set_homepage(Surfer * surfer, char const * homepage);
|
||||
void surfer_set_location(Surfer * surfer, char const * url);
|
||||
void surfer_set_progress(Surfer * surfer, gdouble fraction);
|
||||
void surfer_set_status(Surfer * surfer, char const * status);
|
||||
|
Loading…
Reference in New Issue
Block a user