Close the proper tab when closing tabs
This commit is contained in:
parent
76d467f53a
commit
db8767108b
@ -62,7 +62,7 @@ void on_file_close_tab(gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
surfer_close_tab(surfer);
|
||||
surfer_close_tab(surfer, NULL);
|
||||
}
|
||||
|
||||
|
||||
@ -493,11 +493,13 @@ void on_home(gpointer data)
|
||||
|
||||
|
||||
/* on_notebook_close_tab */
|
||||
void on_notebook_close_tab(gpointer data)
|
||||
void on_notebook_close_tab(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
surfer_close_tab(surfer);
|
||||
if((widget = g_object_get_data(G_OBJECT(widget), "widget")) == NULL)
|
||||
return; /* XXX report error */
|
||||
surfer_close_tab(surfer, widget);
|
||||
}
|
||||
|
||||
|
||||
|
@ -66,7 +66,7 @@ void on_refresh(gpointer data);
|
||||
void on_stop(gpointer data);
|
||||
|
||||
/* notebook */
|
||||
void on_notebook_close_tab(gpointer data);
|
||||
void on_notebook_close_tab(GtkWidget * widget, gpointer data);
|
||||
void on_notebook_switch_page(gpointer data);
|
||||
|
||||
#endif
|
||||
|
18
src/surfer.c
18
src/surfer.c
@ -486,18 +486,25 @@ void surfer_set_title(Surfer * surfer, char const * title)
|
||||
|
||||
/* useful */
|
||||
/* surfer_close_tab */
|
||||
void surfer_close_tab(Surfer * surfer)
|
||||
void surfer_close_tab(Surfer * surfer, GtkWidget * view)
|
||||
{
|
||||
gint n;
|
||||
GtkWidget * view;
|
||||
|
||||
if(gtk_notebook_get_n_pages(GTK_NOTEBOOK(surfer->notebook)) == 1)
|
||||
{
|
||||
surfer_delete(surfer);
|
||||
return;
|
||||
}
|
||||
n = gtk_notebook_get_current_page(GTK_NOTEBOOK(surfer->notebook));
|
||||
view = gtk_notebook_get_nth_page(GTK_NOTEBOOK(surfer->notebook), n);
|
||||
if(view == NULL)
|
||||
{
|
||||
n = gtk_notebook_get_current_page(GTK_NOTEBOOK(
|
||||
surfer->notebook));
|
||||
view = gtk_notebook_get_nth_page(GTK_NOTEBOOK(surfer->notebook),
|
||||
n);
|
||||
}
|
||||
else if((n = gtk_notebook_page_num(GTK_NOTEBOOK(surfer->notebook),
|
||||
view)) < 0)
|
||||
return; /* XXX return error */
|
||||
ghtml_delete(view);
|
||||
gtk_notebook_remove_page(GTK_NOTEBOOK(surfer->notebook), n);
|
||||
if(gtk_notebook_get_n_pages(GTK_NOTEBOOK(surfer->notebook)) == 1)
|
||||
@ -812,10 +819,11 @@ static GtkWidget * _tab_button(Surfer * surfer, GtkWidget * widget,
|
||||
g_object_set_data(G_OBJECT(widget), "label", label);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 4);
|
||||
button = gtk_button_new();
|
||||
g_object_set_data(G_OBJECT(button), "widget", widget);
|
||||
gtk_button_set_image(GTK_BUTTON(button), gtk_image_new_from_stock(
|
||||
GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU));
|
||||
gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
|
||||
g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(
|
||||
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(
|
||||
on_notebook_close_tab), surfer);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, TRUE, 0);
|
||||
gtk_widget_show_all(hbox);
|
||||
|
@ -72,7 +72,7 @@ void surfer_warning(Surfer * surfer, char const * message);
|
||||
void surfer_open(Surfer * surfer, char const * url);
|
||||
void surfer_open_dialog(Surfer * surfer);
|
||||
void surfer_open_tab(Surfer * surfer, char const * url);
|
||||
void surfer_close_tab(Surfer * surfer);
|
||||
void surfer_close_tab(Surfer * surfer, GtkWidget * widget);
|
||||
|
||||
void surfer_print(Surfer * surfer);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user