Apply the correct status, progress and location when switching tabs
This commit is contained in:
parent
473eae8b59
commit
2bd872d86a
@ -502,20 +502,34 @@ void on_notebook_close_tab(gpointer data)
|
||||
|
||||
|
||||
/* on_notebook_switch_page */
|
||||
void on_notebook_switch_page(GtkWidget * widget, GtkNotebookPage * page,
|
||||
guint n, gpointer data)
|
||||
static gboolean _switch_page_idle(gpointer data);
|
||||
|
||||
void on_notebook_switch_page(gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
g_idle_add(_switch_page_idle, surfer);
|
||||
}
|
||||
|
||||
static gboolean _switch_page_idle(gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
gint n;
|
||||
GtkWidget * ghtml;
|
||||
|
||||
if((n = gtk_notebook_get_current_page(GTK_NOTEBOOK(surfer->notebook)))
|
||||
< 0)
|
||||
return FALSE;
|
||||
ghtml = gtk_notebook_get_nth_page(GTK_NOTEBOOK(surfer->notebook), n);
|
||||
/* FIXME implement:
|
||||
* - change the title (tab)
|
||||
* - update toolbar buttons */
|
||||
surfer_set_location(surfer, ghtml_get_location(ghtml));
|
||||
surfer_set_progress(surfer, ghtml_get_progress(ghtml));
|
||||
surfer_set_status(surfer, ghtml_get_status(ghtml));
|
||||
surfer_set_title(surfer, ghtml_get_title(ghtml));
|
||||
/* XXX the Surfer fetches the right values by himself => API change? */
|
||||
surfer_set_location(surfer, NULL);
|
||||
surfer_set_progress(surfer, 0.0);
|
||||
surfer_set_status(surfer, NULL);
|
||||
surfer_set_title(surfer, NULL);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -67,7 +67,6 @@ void on_stop(gpointer data);
|
||||
|
||||
/* notebook */
|
||||
void on_notebook_close_tab(gpointer data);
|
||||
void on_notebook_switch_page(GtkWidget * widget, GtkNotebookPage * page,
|
||||
guint n, gpointer data);
|
||||
void on_notebook_switch_page(gpointer data);
|
||||
|
||||
#endif
|
||||
|
13
src/surfer.c
13
src/surfer.c
@ -285,8 +285,8 @@ Surfer * _new_do(char const * url)
|
||||
surfer->notebook = gtk_notebook_new();
|
||||
gtk_notebook_set_show_border(GTK_NOTEBOOK(surfer->notebook), FALSE);
|
||||
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(surfer->notebook), FALSE);
|
||||
g_signal_connect(G_OBJECT(surfer->notebook), "switch-page", G_CALLBACK(
|
||||
on_notebook_switch_page), surfer);
|
||||
g_signal_connect_swapped(G_OBJECT(surfer->notebook), "switch-page",
|
||||
G_CALLBACK(on_notebook_switch_page), surfer);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), surfer->notebook, TRUE, TRUE, 0);
|
||||
/* statusbar */
|
||||
surfer->statusbox = gtk_hbox_new(FALSE, 0);
|
||||
@ -383,12 +383,13 @@ void surfer_set_location(Surfer * surfer, char const * url)
|
||||
GtkWidget * widget;
|
||||
GtkWidget * view;
|
||||
|
||||
if((view = surfer_get_view(surfer)) == NULL)
|
||||
return; /* consider the current tab only */
|
||||
url = ghtml_get_location(view);
|
||||
if(url == NULL)
|
||||
url = "";
|
||||
widget = gtk_bin_get_child(GTK_BIN(surfer->lb_path));
|
||||
gtk_entry_set_text(GTK_ENTRY(widget), url);
|
||||
if((view = surfer_get_view(surfer)) == NULL)
|
||||
return; /* XXX really correct? */
|
||||
if(i == 8)
|
||||
gtk_combo_box_remove_text(GTK_COMBO_BOX(surfer->lb_path), 0);
|
||||
else
|
||||
@ -423,9 +424,13 @@ void surfer_set_progress(Surfer * surfer, gdouble fraction)
|
||||
/* surfer_set_status */
|
||||
void surfer_set_status(Surfer * surfer, char const * status)
|
||||
{
|
||||
GtkWidget * view;
|
||||
GtkStatusbar * sb = GTK_STATUSBAR(surfer->statusbar);
|
||||
GtkProgressBar * pb = GTK_PROGRESS_BAR(surfer->progress);
|
||||
|
||||
if((view = surfer_get_view(surfer)) == NULL)
|
||||
return; /* consider the current tab only */
|
||||
status = ghtml_get_status(view);
|
||||
if(surfer->statusbar_id != 0)
|
||||
gtk_statusbar_remove(sb, gtk_statusbar_get_context_id(sb, ""),
|
||||
surfer->statusbar_id);
|
||||
|
Loading…
Reference in New Issue
Block a user